kubectl get
- 获取资源及配置文件 kubectl get resource 【resourceName -o=yaml】
kubectl create
- 指定镜像创建或者 指定文件创建
kubectl create resource 【resourceName】 --image=myImage 【-f my.yaml】
kubectl delete
kubectl describe resource resourceName
kubectl rollout histroy resource resourceName 【--revision 版本、修订】
kubectl rollout pause/resume resource resourceName
kubectl edit resource resourceName
kubectl set property resource resourceName value=myVAalue
kubectl scale resource resourceName --replicas=num
创建 statefulSet kind: StatefulSet
statusfulSet.yaml
---
apiVersion: v1
kind: Service
metadata:name: nginxlabels:app: nginx
spec: ports:- port: 80name: webclusterIP: Noneselector: app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata: name: web
spec: serviceName: nginxreplicas: 2selector: matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec: containers:- name: nginximage: nginxports: - containerPort: 80name: webvolumeMounts:- name: wwwmountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata: name: wwwspec: accessModes: ['ReadWriteOnce']resources:requests:storage: 500Mi
statefulSet 的 pod 的 dns 的命名方式:
statefulSetName-[0、1、2 ......]-namespace-svc.cluster.local
扩容和缩容
kubectl scale sts statefulSetName --replicas=num
镜像更新
1、通过set
kubectl set image sts/web nginx=nginx:1.25.5
2、通过 patch
3、更新模式
-、 rollingUpdate (default)
利用 partition (分区) 实现 灰度发布 (金丝雀发布)
修改 partition 的值为想要的 更新范围 , 目前为 3
当前 5个 pod ng 版本为 1.25.5
修改 sts web 的 image 为 nginx
再次查看 web-0 web-1 web-2 的 依旧为 ng:1.25.5
但是 web-3 web-4 已改为 nginx
后续进一步 扩大发布范围 继续修改 partition的值 即可 2 -1 -0
k8s 的 partition 只和当前的配置文件的内容有关联、现在 image: nginx 如果修改 partition: 0
那么所有的 pod 的 image 都会变成 image: nginx
-、onDelete
updateStrategy:type: onDelete
修改后不会有任何变化
只有 删除 pod 时 k8s 会立即 创建一个新的 pod ,pod配置为 修改后的 配置
目前 pod image 都是 nginx
修改为
nginx:1.25.5
updateStrategy: OnDelete
删除前查看 web-1
删除后查看 web-1
是否级联删除
当删除 父级资源 时默认会删除 子级资源
deployment -> pod
statefulSet - > pod
--cascsde = true(default)