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: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: nginx
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
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)