一、创建deployment和生成service

[root@k8s-master docker_study]# kubectl create deployment web --image=nginx --dry-run=client -o yaml > n1.yaml
[root@k8s-master docker_study]# kubectl apply -f n1.yaml
[root@k8s-master docker_study]# kubectl get pod
NAME                   READY   STATUS    RESTARTS   AGE
web-5dcb957ccc-mr6dr   1/1     Running   0          27s

我们可以根据已经部署的deployment,生成yaml模板配置

[root@k8s-master docker_study]# kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=myweb -o yaml > myweb.yaml

[root@k8s-master docker_study]# kubectl apply -f myweb.yaml 
service/myweb created
[root@k8s-master docker_study]# kubectl get pod,svc
NAME                       READY   STATUS    RESTARTS   AGE
pod/web-5dcb957ccc-mr6dr   1/1     Running   0          107s

NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        5d
service/myweb        NodePort    10.102.4.179   <none>        80:32612/TCP   8s

我们可以通过32612端口在其他节点中进行访问。
在这里插入图片描述

pod跟controller是通过label标签来进行定位的。

二、升级回滚

项目中,我们可以进行打包成新的版本,制作成docker镜像,通过K8S管理,只需要修改yaml镜像的版本。
以nginx为例,我们先构建一个nginx的1.14版本,代替我们手工构建。
由以前kubectl create deployment生成的yaml文件,我们进行修改。
在这里插入图片描述
保存,再次

kubectl apply -f nginx.yaml

之前集群节点,由于没有指定版本,默认使用latest版本
在这里插入图片描述
我们来看下,指定了版本的nginx在哪个节点进行镜像拉取
在这里插入图片描述

我们可以去k8s-node2上进行查看
在这里插入图片描述
我们模拟版本更新,由1.14升级到1.15
我们设置镜像版本

kubectl set image deployment web nginx=nginx:1.15

在这里插入图片描述
你可以看到替换的过程,使用kubectl get pod进行查看,最终只能看到一个running
在这里插入图片描述
在这里插入图片描述

我们也可以查看到,替换过程,使用kubectl describe deployment web进行查看
在这里插入图片描述
最终在k8s-node1中拉取了nginx1.15版本
在这里插入图片描述

这样我们就进行了升级
查看升级状态

kubectl rollout status deployment web

在这里插入图片描述
查看历史版本
在这里插入图片描述

回滚到上一个版本

kubectl rollout undo deployment web

在这里插入图片描述
在这里插入图片描述
还可以还原到指定版本
在这里插入图片描述
可以使用kubectl describe pod pod名称进行查看明细

三、弹性伸缩

kubectl scale deployment web --replicas=10
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐