K8s系列之:kubectl子命令详解三
- 1)apply
- 2)patch
- 3)replace
- 4)label
- 5)annotate
1)apply
从配置文件或stdin中对资源对象进行配置更新,文件可以使用JSON和YAML格式。使用apply或create --save-config创建资源是一样的。
kubectl apply -f FILENAME
(base) [root@bigdata1 data]# kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment configured
2)patch
使用补丁更新资源的字段,JSON和YAML格式都可以。
kubectl patch -f FILENAME | TYPE NAME --patch PATCH
使用补丁更新节点为不可调度:
kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
更新容器的镜像:
kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"K8s-server-hostname","image":"new image"}]}}'
3)replace
用指定的文件或stdin替换资源,如果替换现有资源,必须提供完整的资源定义。可以通过kubectl get TYPE -o yaml获得。
(base) [root@bigdata1 data]# kubectl replace -f mysql-rc.yaml
replicationcontroller/mysql replaced
4)label
更新资源上的标签。标签必须以字母或数字开头,可以包含字母、数字、连字符、点和下画线。如果–overwrite为true,则可以覆盖现有标签,否则覆盖标签将返回错误。
kubectl label -f FILENAME | TYPE NAME
#更新pod nginx的标签unhealthy的值为true
kubectl label pods nginx unhealthy=true
#更新pod nginx的标签status为unhealthy,并覆盖现有的值
kubectl label --overwrite pods nginx status=unhealthy
5)annotate
#更新一个或多个资源上的注释。
kubectl annotate pods nginx description='my frontend'
#移除所有description字段的注释
kubectl annotate pods nginx description-