控制器: 1,deployment 无状态部署 2,StatefulSet 有状态部署 3,DaemonSet 守护进程部署 4,Job 批处理 5,CronJob 批处理 Deployment: 部署无状态应用 管理Pod和ReplicaSet 具有上线部署、副本设定、滚动升级、回滚等功能 提供声明式更新,例如只更新一个新的Image 应用场景:Web服务 SatefulSet: 部署有状态应用 解决Pod独立生命周期,保持Pod启动顺序和唯一性 1. 稳定,唯一的网络标识符,持久存储 2. 有序,优雅的部署和扩展、删除和终止 3. 有序,滚动更新 应用场景:数据库 StatefulSet与Deployment区别:有身份的! 身份三要素: 域名 主机名 存储(PVC) ClusterIP A记录格式:<service-name>.<namespace-name>.svc.cluster.local ClusterIP=None A记录格式:<statefulsetName-index>.<service-name>.svc.cluster.local 示例:web-0.nginx.default.svc.cluster.local 无状态的特点: 1,deployment认为所有的pod都是一样的 2,不用考虑顺序的要求 3,也不用考虑哪个在哪个node运行 4,随意扩容/缩容 常用的服务: headless service:无头服务 service: 一组pod访问策略,提供负载均衡和服务发现。 DaemonSet: 在每一个Node上运行一个Pod 新加入的Node也同样会自动运行一个Pod 应用场景:Agent Job分为普通任务(Job)和定时任务(CronJob) 一次性执行 应用场景:离线数据处理,视频解码等业务 CronJob定时任务,像Linux的Crontab一样。 定时任务 应用场景:通知,备份 [root@centos7 demo]# cat headless.yaml apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx [root@centos7 demo]# [root@centos7 demo]# kubectl apply -f headless.yaml service/nginx created [root@centos7 demo]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 3d4h nginx ClusterIP None <none> 80/TCP 40s [root@centos7 demo]# kubectl get ep NAME ENDPOINTS AGE kubernetes 192.168.0.11:6443 3d4h nginx <none> 59s [root@centos7 demo]# [root@centos7 demo]# cat sts.yaml apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx-statefulset namespace: default spec: serviceName: nginx replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 [root@centos7 demo]# [root@centos7 demo]# kubectl apply -f sts.yaml service/nginx unchanged statefulset.apps/nginx-statefulset unchanged [root@centos7 demo]# [root@centos7 demo]# kubectl get pods,svc NAME READY STATUS RESTARTS AGE pod/nginx-statefulset-0 1/1 Running 0 9m25s pod/nginx-statefulset-1 1/1 Running 0 8m51s pod/nginx-statefulset-2 1/1 Running 0 8m17s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 3d5h service/nginx ClusterIP None <none> 80/TCP 9m41s [root@centos7 demo]# [root@centos7 demo]# kubectl run -it --image=busybox:1.28.4 --rm --restart=Never sh If you don‘t see a command prompt, try pressing enter. / # / # / # nslookup nginx-statefulset-0.nginx.default.svc.cluster.local Server: 10.0.0.2 Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local Name: nginx-statefulset-0.nginx.default.svc.cluster.local Address 1: 10.244.1.5 nginx-statefulset-0.nginx.default.svc.cluster.local / #