Kubernetes 相关命令汇总(持续更新)
文章目录
kubectl
PS:
- 在命令行中,所有键值对格式的参数都使用 = 而非 :
- 增加 -v 9:开启 debug 日志,查看详细信息
kubectl api-resources
- 查看 cmd 操作时候的长名和短名
kubectl run
- kubectl run -i –tty –image busybox dns-test –restart=Never –rm /bin/bash:直接创建一个 Pod
- –rm:意味着 Pod 退出后就会被删除
kubectl create
- kubectl create -f nginx-deployment.yaml:根据 department 文件创建 pod
kubectl create configmap
- kubectl create configmap {{ config.name }} –from-file={{ filepath }}:基于目录或目录创建 configmap
- kubectl create configmap special-config –from-literal={{ key1 }}={{ value1 }} –from-literal={{ key2 }}={{ value2 }}:根据字面量创建 configMap
kubectl apply
- kubectl describe nginx-deployment-64c9d67564-45wrd:创建/更新 pod
- kubectl describe nginx-deployment-64c9d67564-45wrd –record:创建/更新 pod, –record 记录下每次操作所执行的命令
kubectl get
- kubectl get nodes:查看 Nodes
- kubectl get nodes –show-labels:查看 node label
- kubectl get pods:查看 Pods
- kubectl get *** -o yaml:这样的参数会将指定的 Pod API 对象以 YAML 的方式展示出来
- k get svc -owide:查看详细参数
- kubectl get pods -l app=nginx:根据 Label selector 搜索容器
- -l app!=nginx:查看 app != nginx 的 pod
- kubectl get pods –show-labels:查看所有 Pod 并显示其对应 labels
- kubectl get pod -w -l app=nginx:-w 持续观测容器的操作
- kubectl get pod -w -l app=nginx:-w 持续观测容器的操作
- kubectl get po -owide:以详细列表的格式查看对象
- kubectl get secrets:查看所有的 Secrets
- kubectl deployment:查看所有 deployment
- 返回说明:
- READY:当前 Running 状态的 Pod 数 / 用户期望的 Pod 副本个数
- UP-TO-DATE:前处于最新版本的 Pod 的个数,所谓最新版本指的是 Pod 的 Spec 部分与 Deployment 里 Pod 模板里定义的完全一致
- AVAILABLE:当前已经可用的 Pod 的个数,即:既是 Running 状态,又是最新版本,并且已经处于 Ready(健康检查正确)状态的 Pod 的个数
- 返回说明:
- kubectl get replicaset/rs:查看所有 replicaset
- kubectl get services:查看已创建的 services
- kubectl get statefulset:查看已创建的 statefulset
- kubectl get pv:查看所有已创建的 PV
- kubectl get pvc:查看所有已创建的 PVC
- kubectl get jobs:查看 job
kubectl describe
- kubectl describe pod nginx-deployment-5d59d67564-n4tth:查看 pod 详细信息
kubectl exec
- kubectl exec -it nginx-deployment-64c9d67564-45wrd – /bin/bash:进入一个 Pod 中
- – :用于区分指令和要执行的命令
kubectl delete
- kubectl delete -f nginx-deployment.yaml:根据 deployment 删除 pod
- kubectl delete pod -l app=nginx:根据标签删除 Pod
kubectl edit
- 编辑已经 apply 的 YAML,处理流程是把 API 对象的内容下载到了本地,修改完后再提交上去
- kubectl edit secret mysecret:编辑 secrect 的定义
- kubectl edit deployment/nginx-deployment:编辑 Pod 的 Deployment
kubectl label
- k label nodes k8s-node02 desk=ssd:给 Node 打标签
- k label nodes k8s-node02 desk-:删除 node 的 desk 标签
kubectl logs
- kubectl logs test-downwardapi-volume:查看 pod 的输出信息
- -f:类似于 tail -f
kubectl scale
- 更改 deployment 等状态
- kubectl scale deployment nginx-deployment –replicas=4:更改 deployment replicas 为 4 个
kubectl rollout
- kubectl rollout undo deployment nginx-deployment:回滚 deployment 的变更
- kubectl rollout history deployment nginx-deployment:查看 deployment 对应的历史版本
- kubectl rollout history deployment nginx-deployment –revision=2:查看 deployment 某个历史版本的具体信息
- kubectl rollout undo deployment nginx-deployment –to-revision=2:回滚直某个具体的版本
- kubectl rollout status ds/fluentd-elasticsearch -n kube-system:查看更新状态
- kubectl rollout pause deployment/nginx-deployment:暂停 deployment 的变更后自动发布
- kubectl rollout resume deployment/nginx-deployment:继续 deployment 变更后自动发布,暂停-继续之间如果变更过 deployemnt 仅会触发一次更新
kubectl patch
- kubectl patch statefulset mysql –type='json’ -p=’[{“op”: “replace”, “path”: “/spec/template/spec/containers/0/image”, “value”:“mysql:5.7.23”}]’
- 以 “补丁” 的方式(Json 格式)修改 API 对象的指定字段,这样,StatefulSet Controller 就会按照与 Pod 编号相反的顺序,从最后一个 Pod 开始,逐一更新这个 StatefulSet 管理的每个 Pod
- kubectl patch statefulset mysql -p ‘{“spec”:{“updateStrategy”:{“type”:“RollingUpdate”,“rollingUpdate”:{“partition”:2}}}}‘statefulset.apps/mysql patched
- partition 字段修改为 2,那么只有序号大于或者等于 2 的 Pod 会被更新到这个版本。并且,如果你删除或者重启了序号小于 2 的 Pod,等它再次启动后,也会保持原先的 5.7.2 版本,绝不会被升级到 5.7.23 版本。
文章作者 Xiang
上次更新 2022-02-08