一、简介:
Kubernetes/K8S基础使用方法总结【三】——用yaml配置清单创建资源
这篇文章主要记录自主式pod资源的创建,即删除pod后不会自动重建,下面将介绍如何通过Pod控制器创建和管理pod。
kubernetes的pod资源主要的控制管理器有ReplicaSet、Deployment、DaemonSet、StatefulSet、Job、CronJob等类型,最常用的基本上是Deployment、DaemonSet和StatefulSet。
二、Pod控制器分类
1.ReplicaSet(简写rs)
多副本运行pod资源,可实现自动管理无状态pod, ReplicaSet实例:
apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp namespace: default spec: replicas: 2 selector: matchLabels: app: myapp release: canary template: metadata: name: myapp-pod labels: app: myapp release: canary environment: qa spec: containers: - name: myapp-container image: ikubernetes/myapp:v1 ports: - name: http containerPort: 80
查看创建的ReplicaSet和pod资源:
[root@master1 yaml]# kubectl get ReplicaSet NAME DESIRED CURRENT READY AGE myapp 2 2 2 11m [root@master1 yaml]# kubectl get rs NAME DESIRED CURRENT READY AGE myapp 2 2 2 11m [root@master1 yaml]# kubectl get pods NAME READY STATUS RESTARTS AGE myapp-6f95l 1/1 Running 0 11m myapp-vvvgq 1/1 Running 0 11m
说明:这样创建的pod资源没有service控制管理。
2.Deployment(简写deploy)
无状态服务,包含ReplicaSet的功能,可以创建期望的pod资源副本数量
# 实例 apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deploy namespace: default spec: replicas: 3 selector: matchLabels: app: myapp release: canary template: metadata: labels: app: myapp release: canary spec: containers: - name: myapp image: ikubernetes/myapp:v1 ports: - name: http containerPort: 80
3.DaemonSet(简写ds)
无状态服务,主要用于确保集群中的每个节点只运行一个pod资源,若新添加节点会自动添加pod副本资源,一般用来运行系统集的后台任务,如日志收集等。实例如下:
apiVersion: apps/v1 kind: Deployment metadata: name: redis namespace: default spec: replicas: 1 selector: matchLabels: app: redis role: logstor template: metadata: labels: app: redis role: logstor spec: containers: - name: redis image: redis:4.0-alpine ports: role: logstor template: metadata: labels: app: redis role: logstor spec: containers: - name: redis image: redis:4.0-alpine ports: - name: reids containerPort: 6379 --- apiVersion: apps/v1 kind: DaemonSet metadata: name: filebeat-daemonset namespace: default spec: selector: matchLabels: app: filebeat release: stable template: metadata: labels: app: filebeat release: stable spec: containers: - name: filebeat image: ikubernetes/filebeat:5.6.5-alpine imagePullPolicy: Always env: - name: REDIS_HOST value: redis.default.svc.cluster.local - name: REDIS_LOG_LEVEL value: info
4.StatefulSet
可以管理有状态应用,每个pod资源可以被单独管理。请参考: Kubernetes/K8S基础使用方法总结【九】——Pod控制器StatefulSet
5.Job
一般用于单独执行某特定任务的pod资源,执行完毕后可以被自动删除,如数据库的数据备份,临时执行一次。
6.Cronjob
相对于Job而言,可以周期性的执行任务。
三、Pod资源的扩展、缩减和版本升级、降级
1. 扩展缩减
您暂时无权查看此隐藏内容!
4.常用命令小结:
- kubectl get pods –show-labels: 查看pod及其labels
- kubectl label pods pod-name release=canary: 给pod-name打release=canary标签
- kubectl patch deployment myapp-deploy -p ‘{“spec”:{“strategy”:{“rollingUpdate”:{“maxSurge”:1,”maxUnavailable”:0}}}}: 通过打补丁的方式(也可以用kubectl edit命令)更改更新策略,最多可增加一个pod资源,不允许减少
- kubectl roolout status deployment myapp-deploy: 可以查看更新状态,也可以用kubectl get pods -w监控
- kubectl logs : 查看pod资源日志
- kubectl expose deployment redis –port=6379: 创建服务
- kubectl exec -it redis-fbfdf8c65-5vr7r — /bin/sh: 交互式进入pod
评论前必须登录!
注册