欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kubernetes练习---控制器

程序员文章站 2024-03-22 22:39:16
...

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

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

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

(1)基本部署两个nginx

[aaa@qq.com manifest]$ vim rs.yaml
[aaa@qq.com manifest]$ kubectl apply -f rs.yaml 
[aaa@qq.com 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
[aaa@qq.com manifest]$ kubectl get rs

Kubernetes练习---控制器
Kubernetes练习---控制器
Kubernetes练习---控制器

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

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

Kubernetes练习---控制器

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

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

Kubernetes练习---控制器

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

Kubernetes练习---控制器

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

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

[aaa@qq.com manifest]$ vim deployment.yaml 
[aaa@qq.com manifest]$ kubectl apply -f deployment.yaml 
[aaa@qq.com 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

Kubernetes练习---控制器
Kubernetes练习---控制器

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

[aaa@qq.com manifest]$ vim deployment.yaml 
replicas: 4
[aaa@qq.com manifest]$ kubectl apply -f deployment.yaml 
[aaa@qq.com 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

Kubernetes练习---控制器

(3).测试滚动更新
在资源清单中更新版本,保留rs删除其对应的pod,在新的rs上创建pod。会滚动更新并便于回滚,回滚时直接回滚为原先的rs并创建新的pod。
Kubernetes练习---控制器

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

[aaa@qq.com manifest]$ vim daemonset.yaml 
[aaa@qq.com manifest]$ kubectl apply -f daemonset.yaml 
daemonset.apps/daemonset-example created
[aaa@qq.com manifest]$ kubectl apply -f daemonset.yaml 
daemonset.apps/daemonset-example unchanged

Kubernetes练习---控制器

Kubernetes练习---控制器

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

[aaa@qq.com manifest]$ kubectl delete pod daemonset-example-k4vdg
pod "daemonset-example-k4vdg" deleted
[aaa@qq.com 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>

Kubernetes练习---控制器

四、job控制器

[aaa@qq.com manifest]$ kubectl logs pi-dbbzp

Kubernetes练习---控制器
Kubernetes练习---控制器
Kubernetes练习---控制器

五、Cronjob测试

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

Kubernetes练习---控制器

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

Kubernetes练习---控制器
Kubernetes练习---控制器

相关标签: 运维实战 运维