开发者学堂课程【Kubernetes 极速入门:K8S 集群核心概念 Controller_介绍-分类-Deployment 控制器介绍_创建 Deployment 控制器类型应用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/658/detail/10912
K8S 集群核心概念 Controller_介绍-分类-Deployment 控制器介绍_创建 Deployment 控制器类型应用
内容介绍:
一、场景
二、学习目标
三、学习步骤
四、课程内容
一、场景
通过前面课程的学习,已经掌握了 Pod 管理操作,过程中发现当删除Pod时是可以直接删除的,如果在生产过程中误操作,Pod 同样也会轻易被删除的,因此,需要在k8s 集群中引入另一种概念 Controller (控制器),用于在 k8s 集群中以 loop 方式监视Pod 状态,如果其发现Pod被删除,将会重新拉起一个 Pod,以让 Pod 一直保持在用户期望状态。
二、学习目标
1.了解 Controller 作用
2.了解 Controller 分类
3.了解 Deployment 控制器作用
4.掌握创建 Deployment 控制器类型应用方法
5.掌握删除 Deployment 控制器类型应用方法
三、学习步骤
1.Controller 介绍
2.Controller 分类
3.Deployment 控制器介绍
4.创建 Deployment 控制器类型应用
5.删除 Deployment 控制器类型应用
四、课程内容
1.Controller 介绍
●控制器
●目的:用于对应用运行的资源对象(主要是pod)进行监控
●当 Pod 出现问题时,会把Pod重新拉起,以达到用户的期望状态
2.Controller分类
常见 Pod 控制器:
控制器名称 |
作用 |
Deployment |
声明式更新控制器,用于发布无状态应用 |
ReplicaSet |
副本集控制器,用于对Pod进行副本规模扩大或剪裁 |
statefulSet |
有状态副本集,用于发布有状态应用 |
DaemonSet |
在k8s集群每一个Node上运行一个副本,用于发布监控或日志收集类等应用(如果想要对整个k8s集群所有的节点,例如master节点和work节点进行监控,或者对其进行日志收集,可以使用DaemonSet控制器。) |
Job |
运行一次性作业任务(例如执行一个同步时间) |
CronJob |
运行周期性作业任务 |
3.Deployment 控制器介绍
●具有上线部署、滚动升级、创建副本、回滚到以前某一版本(成功/稳定)等功能。
●Deployment 包含 ReplicaSet,除非需要自定义升级功能或者根本不需要升级Pod,否则还是建议使用 Deployment 而不直接使用 Replica Set 。
4.创建 Deployment 控制器类型应用
方式一:通过 Kubect 命令行创建
命令
[rootemaster1 ~]# kubectl run nginx-app --image=nginx: latest -
-image-pu11-policy=IfNotPresent --replicas=2(通过两个pod运行起来)
输出
dep1oyment.apps/nginx-app created
具体操作:
[ root@master1 yamldir]# kubectl run nginx-app1 --image=nginx:latest --image-pull-
policy=IfNotPresent -- replicas=2
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a
future version. Use kubectl run --generator=run-pod/vl or kubectl create instead
deployment.apps/nginx-app1 created
如何查看已经创建的应用
说明
nginx-app 是 deployment 控制器类型的应用名称
nginx : latest 是应用运行的 Pod 中的 Container 所使用的镜像
IfNotPresent 是 container 容器镜像下载策略,如果本地有镜像,使用本地,如果本地没有镜像,下载镜像
--replicas=2是指应用运行的 Pod 共计2个副本,这是用户的期望值,
Deployment 控制器中的 Replicaset 控制器会一直监控此应用运行的 Pod 副本状态,如果数量达不到用户期望,就会重新拉起一个新的 Pod,会让 Pod 数量一直维持在用户期望值数量。
命令
查看 Deployment 控制器类型应用
[rootemaster1 ~]#kubect1 get dep
l
oyment.apps
命令
查看 Replicaset 控制器类型
[root@master1 ~]#kubect
l
get replicaset
命令
查 Pod 状态
[root@master1 ~]# kubect
l
get pods
具体操作:
[ root@master1 yamldir]#kubectl get deployment
NAME READY UP -TO-DATE AVAILABLE AGE
nginx-app1 2/2 2 2 75s
[ root@master1 yamldir]#kubectl get replicaset
NAME DESIRED CURRENT READY AGE
nginx- app1-57c7c9c89d 2 2 2 2m12s
[ roptamaster1 yamldir]#kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-app1-57c7c9c89d-qp8h8 1/1 Running 0 2m50s
nginx-app1-57c7c9c89d-tq868 1/1 Running 0 2m50s
访问 Pod
[ root@master1 yamldir]#kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP
NODE NOMINATED NODE READINESS GATES
nginx-app1-57c7c9c89d-qp8h8 1/1 Running 0 3m31s 172 .16.235.130
worker1 <none> <none>
nginx-app1-57c7c9c89d-tq868
1/
1 Running 0 3m31s 172.16 .189.66
worker2 <none> <none>
[ root@master1 yamldir]# curl http:
//172.16.189.66