Kubernetes练习<4>---控制器

可以同时布置多个相同属性的容器
一、ReplicaSet控制器

ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行。 然而,Deployment 是一个更高级的概念,它管理 ReplicaSet,并向 Pod 提供声明式的更新以及许多其他有用的功能。 因此,我们建议使用 Deployment 而不是直接使用 ReplicaSet,除非您需要自定义更新业务流程或根本不需要更新。

ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收。

(1)基本部署两个nginx

[wjjk8s@server1 manifest]$ vim rs.yaml
[wjjk8s@server1 manifest]$ kubectl apply -f rs.yaml 
[wjjk8s@server1 manifest]$ kubectl get pod
NAME               READY   STATUS    RESTARTS   AGE
rs-example-bdmbn   1/1     Running   0          60s
rs-example-xw289   1/1     Running   0          60s
[wjjk8s@server1 manifest]$ kubectl get rs

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)拉伸-直接将yaml文件中副本的个数修改就可

[wjjk8s@server1 manifest]$ vim rs.yaml
replicas: 4
[wjjk8s@server1 manifest]$ kubectl apply -f rs.yaml	#不需要删除,更新即可

在这里插入图片描述

(3).测试更改某个pod的标签

[wjjk8s@server1 manifest]$ kubectl get pod --show-labels		#查看标签
[wjjk8s@server1 manifest]$ kubectl label pod rs-example-8ghjb app=myapp --overwrite
pod/rs-example-8ghjb labeled		#更改标签,还是4个但其中一个更改了标签

在这里插入图片描述

[wjjk8s@server1 manifest]$ vim rs.yaml
replicas: 4
[wjjk8s@server1 manifest]$ kubectl apply -f rs.yaml 
replicaset.apps/rs-example configured
[wjjk8s@server1 manifest]$ kubectl get pod		#停了两个,更改标签的已经不算在内,脱离rs控制器

在这里插入图片描述

二、Deployment测试
官方提供例子:
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#deployment-v1-apps

(1)基本部署两个nginx:1.14.2

[wjjk8s@server1 manifest]$ vim deployment.yaml 
[wjjk8s@server1 manifest]$ kubectl apply -f deployment.yaml 
[wjjk8s@server1 manifest]$ kubectl get pod			#成功创建两个容器
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6b474476c4-5rswj   1/1     Running   0          114s
nginx-deployment-6b474476c4-qs6wp   1/1     Running   0          114s

在这里插入图片描述
在这里插入图片描述

(2)拉伸-直接将yaml文件中副本的个数修改就可

[wjjk8s@server1 manifest]$ vim deployment.yaml 
replicas: 4
[wjjk8s@server1 manifest]$ kubectl apply -f deployment.yaml 
[wjjk8s@server1 manifest]$ kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6b474476c4-5rswj   1/1     Running   0          6m20s
nginx-deployment-6b474476c4-77jh6   1/1     Running   0          79s
nginx-deployment-6b474476c4-9rk56   1/1     Running   0          79s
nginx-deployment-6b474476c4-qs6wp   1/1     Running   0          6m20s

在这里插入图片描述

(3).测试滚动更新
在资源清单中更新版本,保留rs删除其对应的pod,在新的rs上创建pod。会滚动更新并便于回滚,回滚时直接回滚为原先的rs并创建新的pod。
在这里插入图片描述

三、DaemonSet
每个node里只有一个pod

[wjjk8s@server1 manifest]$ vim daemonset.yaml 
[wjjk8s@server1 manifest]$ kubectl apply -f daemonset.yaml 
daemonset.apps/daemonset-example created
[wjjk8s@server1 manifest]$ kubectl apply -f daemonset.yaml 
daemonset.apps/daemonset-example unchanged

在这里插入图片描述

在这里插入图片描述

测试删除一个pod,控制器会重新拉取一个镜像

[wjjk8s@server1 manifest]$ kubectl delete pod daemonset-example-k4vdg
pod "daemonset-example-k4vdg" deleted
[wjjk8s@server1 manifest]$ kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE    IP            NODE      NOMINATED NODE   READINESS GATES
daemonset-example-dx5nt   1/1     Running   0          24s    10.244.2.56   server4   <none>           <none>
daemonset-example-tvm87   1/1     Running   0          6m1s   10.244.1.44   server2   <none>           <none>

在这里插入图片描述

四、job控制器

[wjjk8s@server1 manifest]$ kubectl logs pi-dbbzp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、Cronjob测试

[wjjk8s@server1 manifest]$ kubectl get pod -w
NAME                                READY   STATUS      RESTARTS   AGE
cron-job-example-1587765900-pvttw   0/1     Completed   0          31s

在这里插入图片描述

[wjjk8s@server1 manifest]$ kubectl logs cron-job-example-1587765900-pvttw
Fri Apr 24 22:05:12 UTC 2020
hello from k8s cluster

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值