一、创建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