美文网首页
《每天5分钟玩转 Kubernetes》第一章:把 Kubern

《每天5分钟玩转 Kubernetes》第一章:把 Kubern

作者: SlowGO | 来源:发表于2018-12-12 12:18 被阅读5次

部署应用

kubectl run kubernetes-bootcamp \
  --image=docker.io/jocatalin/kubernetes-bootcamp:v1 \
  --port=8080

deployment.apps/kubernetes-bootcamp created

deployment 是 kubernetes 中的一个概念,可以理解为应用

还有一个基础概念 pod,是容器集合,是 kubernetes 调度的最小单位。

上面的命令运行了一个 deployment,那一定就运行了 pod。

查看当前的 deployment:

kubectl get deployment

NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           4m45s

查看当前 pod:

kubectl get pod

NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-6c5cfd894b-t7hz2   1/1     Running   0          5m8s

kubernetes-bootcamp-6c5cfd894b-t7hz2 是当前应用的 pod。

访问应用

上面运行应用时指定了 port 为 8080,这个端口是用于集群内部访问的,外部访问不了,为了能够外部访问,需要将容器的 8080 端口映射到节点端口。

kubectl expose deployment/kubernetes-bootcamp \
  --type="NodePort" \
  --port=8080

service/kubernetes-bootcamp exposed

可以看到暴露了一个 service。

查看 service:

kubectl get service

NAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes-bootcamp   NodePort    10.152.183.59   <none>        8080:31356/TCP   2m21s

可以看到端口的映射,把 8080 映射到了 31356。

访问:

curl localhost:31356

Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6c5cfd894b-t7hz2 | v=1

正常访问了应用。

应用扩展

上面我们运行 deployment 时,默认只会运行一个副本,查看一下:

kubectl get deployment

NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           4m45s

现在我们想把副本数量增加到3个:

kubectl scale deployment/kubernetes-bootcamp --replicas=3

deployment.extensions/kubernetes-bootcamp scaled

查看一下 deployment:

kubectl get deployment

NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   3/3     3            3           17m

数量变为了3个。

查看一下 pod:

kubectl get pod

NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-6c5cfd894b-4wdsb   1/1     Running   0          84s
kubernetes-bootcamp-6c5cfd894b-t7hz2   1/1     Running   0          18m
kubernetes-bootcamp-6c5cfd894b-w89v9   1/1     Running   0          84s

pod 增加到了3个。

通过 curl 访问应用时,会自动发送到不同的副本,实现负载均衡:

curl localhost:31356
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6c5cfd894b-t7hz2 | v=1

curl localhost:31356
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6c5cfd894b-4wdsb | v=1

curl localhost:31356
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6c5cfd894b-w89v9 | v=1

可以看到 pod 是不同的。

不仅可以增加,也可以减少:

kubectl scale deployment/kubernetes-bootcamp --replicas=2

查看一下 pod 数量:

kubectl get pod

NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-6c5cfd894b-t7hz2   1/1     Running   0          25m
kubernetes-bootcamp-6c5cfd894b-w89v9   1/1     Running   0          8m40s

一个被删除了,变成了2个。

滚动更新

当前应用使用的 image 版本是 v1,现在升级到 v2:

kubectl set image deployment/kubernetes-bootcamp \
  kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

deployment.extensions/kubernetes-bootcamp image updated

访问测试:

curl localhost:31356

Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5bf4d5689b-mcbxx | v=2

从访问结果可以看到已经是 v2 版本了。

如果 v2 出现问题,想回退到 v1,也很简单:

kubectl rollout undo deployment/kubernetes-bootcamp

curl localhost:31356

Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6c5cfd894b-xk9nk | v=1

又回到了 v1。

相关文章

网友评论

      本文标题:《每天5分钟玩转 Kubernetes》第一章:把 Kubern

      本文链接:https://www.haomeiwen.com/subject/iimuhqtx.html