目录
零、测试
使用以下两种方式来创建:
直接创建
kubectl run mynginx --image=nginx
部署创建
kubectl create deployment mytomcat --image=tomcat:8.5.68
然后执行删除操作:
kubectl delete pod mynginx
kubectl delete pod mytomcat-6f5f895f4f-7m478
再查看一次:
kubectl get pod
可以看到普通创建的pod被直接删除了,但是部署创建的pod在被删除后,他自己又启了一个新的出来。这也正是k8s自愈能力的表现。
若要删除部署的话操作如下:
kubectl delete deploy mytomcat
一、多副本
命令行创建
kubectl create deployment mydeploy --image=nginx --replicas=3
yaml创建
vi test.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-dep
name: my-dep
spec:
replicas: 3
selector:
matchLabels:
app: my-dep
template:
metadata:
labels:
app: my-dep
spec:
containers:
- image: nginx
name: nginx
kubectl apply -f test.yaml
dashboard创建
二、扩缩容
先看一眼目前的部署,一共是有4个副本:
扩容
从4个增加到5个:
kubectl scale --replicas=5 deployment/mydeploy
缩容
从5个缩到2个(可以看到命令是一样的,改一下数量就行):
kubectl scale --replicas=2 deployment/mydeploy
yaml修改
kubectl edit deployment mydeploy
直接对此处的数字进行修改,然后保存退出即可。
dashboard修改
直接在这里改数字就行,下面也会显示出相应的代码:
三、自愈&故障转移
自愈
kubectl get pod -owide
可以看到他们跑在node1节点上:
复制左边的name,然后去node1上去看看:
docker ps|grep mydeploy-d566c6fbb-gbfrv
把它停掉:
docker stop e484a06e6be2
然后回master上看看:
kubectl get pod
可以看到已经被停掉了,但是只要稍等一会再看:
k8s已经把它修好了,这也就是k8s的自愈功能。
故障转移
先在master打开监控:
kubectl get pod -w
这回咱们直接把node1节点给关掉,看看k8s会是什么反应(这个反应阈值大概有5分钟):
5分钟后:
故障转移成功!
四、滚动更新
这里针对ngx的镜像进行升级更新:
kubectl set image deploy/mydeploy nginx=nginx:1.16.1 --record
五、版本回退
历史记录
kubectl rollout history deploy/mydeploy
查看某个历史详情
kubectl rollout history deploy/mydeploy --revision=2
回滚(回到上次)
kubectl rollout undo deploy/mydeploy
回滚(回到指定版本)
kubectl rollout undo deploy/mydeploy --to-revision=2