22, k8s 之Kubernetes控制器种类

控制器:
	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
/ # 

  

22, k8s 之Kubernetes控制器种类

上一篇:Road 2 AI-DNN+Softmax+鸢尾花案例


下一篇:dp题