原文:https://blog.csdn.net/qq_42568611/article/details/131219853
高效率运维K8s 这些常用命令你得会
❝
日常K8s运维工作中难免会连接K8s集群哐哐哐的输出命令来进行Kubernetes应用运维工作。今天就总结一些常用的kubectl命令及应用调试技巧。以便于日常查阅或提高效率!
❞
基本操作命令
1. kubectl version #显示kubectl的版本信息
2. kubectl cluster-info # 显示集群的基本信息
3. kubectl get nodes #显示所有的节点信息
4. kubectl get pods # 显示所有的pods信息
5. kubectl create deployment {name} --image={image} # 创建pods
6. kubectl scale deployment {name} --replicas={num} # 修改pods的数量
7. kubectl describe pod {name} # 显示指定的pod的详细信息
8. kubectl logs {name} # 显示指定pod的日志信息
9. kubectl exec -it {name} -- /bin/bash #进入指定pod的bash终端
10. kubectl delete deployment {name} # 删除pods
11. kubectl edit svc {name} # 编辑svc
12. kubectl logs deploy/{deploy_name} --all-containers #查看deployment下的全部pod日志
13. kubectl get cm -A #查看所有configmaps信息
14. kubectl get sa -A # 查看所有serviceaccounts信息
15. kubectl get ds -A # 查看所有daemonsets信息
16. kubectl get deploy -A. # 查看所有deployments信息
17. kubectl get rs -A # 查看所有replicasets信息
18. kubectl get sts -A. # 查看所有statefulsets信息
19. kubectl get jobs -A # 查看所有jobs信息
20. kubectl get ing -A # 查看所有ingresses信息
21. kubectl get ns # 查看有哪些名称空间
22. kubectl -s https://172.16.1.110:6443 get cs# 查看各组件信息【172.16.1.110为master机器】
23. kubectl get pv # 显示所有的pv信息
24. kubectl get pvc -n {ns} #显示所有的pvc信息
1
资源操作类命令
# 创建资源
kubectl create -f xxx.yaml
# 应用资源
kubectl apply -f xxx.yaml
# 应用资源,该目录下的所有 .yaml, .yml, 或 .json 文件都会被使用
kubectl apply -f <directory>
# 创建test名称空间
kubectl create namespace test
# 删除资源
kubectl delete -f xxx.yaml
kubectl delete -f <directory>
# 删除指定的pod
kubectl delete pod podName
# 删除指定名称空间的指定pod
kubectl delete pod -n test podName
# 删除其他资源
kubectl delete svc svcName
kubectl delete deploy deployName
kubectl delete ns nsName
# 强制删除
kubectl delete pod podName -n nsName --grace-period=0 --force
kubectl delete pod podName -n nsName --grace-period=1
kubectl delete pod podName -n nsName --now
# 编辑资源
kubectl edit pod podName
# kubectl label:添加label值
kubectl label nodes k8s-node01 zone=north #为指定节点添加标签
kubectl label nodes k8s-node01 zone- #为指定节点删除标签
kubectl label pod podName -n nsName role-name=test #为指定pod添加标签
kubectl label pod podName -n nsName role-name=dev --overwrite #修改lable标签值
kubectl label pod podName -n nsName role-name- #删除lable标签
1
资源部署和管理类命令
1. kubectl create deployment {name} --image={image} --replicas={num} --port={port} #创建deployment
2. kubectl expose deployment {name} --port={port} --target-port={targetport} --type={type} # 创建service
3. kubectl set image deployment/{name} {container}={image}:{tag} # 更新deployment中某个容器的镜像
4. kubectl rollout history deployment/{name} # 显示指定deployment的版本历史
5. kubectl rollout undo deployment/{name} --to-revision=1 # 回滚指定deployment到指定版本
6. kubectl rollout pause deployment/{name} # 暂停指定deployment的升级
7. kubectl rollout resume deployment/{name} # 恢复指定deployment的升级
8. kubectl rollout status deployment/{name} # 显示指定deployment的升级状态
8. kubectl rollout restart deployment/{name} # 热重启deployment
9. kubectl exec -it {name} -- /bin/bash # 在指定pod中进入bash终端
10. kubectl apply -f {filename} # 根据指定的yaml文件部署kubernetes资源
1
资源维护类命令
kubectl get endpoints {name} # 显示指定service的后端地址信息
kubectl get svc {name} -o jsonpath='{.spec.selector}' # 显示指定service的标签选择器
kubectl label pods {name} {label}={value} # 给指定pod打上标签
kubectl taint node {name} key=value:taint_effect # 在指定节点上添加taint特性,污点
kubectl drain <NODE_NAME> #将节点设置为不可调度状态,以便于维护和升级该节点,并避免丢失重要的运行数据
kubectl cordon <NODE_NAME> #阻止新的 Pod 调度到特定的节点上,以避免在节点维护期间出现过多负载
kubectl uncordon <NODE_NAME> #允许新的 Pod 调度到指定的节点上,以恢复该节点的正常工作状态。
kubectl debug <pod-name> -c <container-name> -it -- /bin/bash #在指定的 Pod 中的容器中运行一个新的 bash 进程,以便进行调试。
1
进阶命令
1. kubectl get svc {name} -o jsonpath='{.spec.clusterIP}' # 显示指定service的cluster IP地址
2. kubectl get endpoints {name} # 显示指定service的后端地址信息
3. kubectl get ingress {name} # 显示指定ingress的详细信息
4. kubectl create ingress {name} --rule={host}/{path}=svc:{service_name}:{port} # 创建ingress条目
5. kubectl delete ingress {name} # 删除指定的ingress条目
6. kubectl get svc {name} -o jsonpath='{.spec.type}' # 显示指定service的类型信息
7. kubectl get pods -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.podIP}{"\n"}{end}' # 显示所有pods的名称和IP地址信息
8. kubectl exec -it {name} -- nc -z -v {ip} {port} # 在指定pod中使用nc工具测试TCP连接
9. kubectl exec -it {name} -- curl {url} # 在指定pod中使用curl工具测试HTTP连接
10.kubectl get pods -l {label} # 显示所有带有指定label的pods的信息
11. kubectl get pods -o jsonpath='{range .items[?(@.status.phase=="Pending")]}{.metadata.name}{"\t"}{.reason}{"\n"}{end}' # 显示所有处于Pending状态的pods
12. kubectl describe deployment {name} # 显示指定deployment的详细信息
13. kubectl rollout restart deployment {name} # 重启指定deployment
14. kubectl rollout undo deployment {name} # 回滚指定deployment
15. kubectl scale deployment {name} --replicas={num} # 修改指定deployment的pod数量
16. kubectl proxy # 打开kubernetes API服务的代理端口
1
自定义资源类型查看
1. kubectl api-versions # 显示kubernetes API上的所有版本
2. kubectl api-resources # 显示kubernetes API上的所有资源
3. kubectl get crds # 显示集群中所有自定义资源的定义
4. kubectl create -f {filename} # 创建自定义资源对象
5. kubectl get crd {name} # 显示指定自定义资源的定义
1
日志及资源使用查看
1. kubectl logs {name} #显示指定pod的日志信息
2. kubectl logs --tail={num} {name} # 显示指定pod最后几条日志信息
3. kubectl logs -f {name} # 实时显示指定pod的日志信息
4. kubectl logs deploy/{deploy_name} --all-containers #查看deployment下的全部pod日志
5. kubectl top nodes # 显示所有节点的CPU和内存使用情况
6. kubectl top pods # 显示所有pods的CPU和内存使用情况
7. kubectl get events # 显示所有事件信息
8. kubectl get pod {name} -o jsonpath='{.spec.containers[*].resources.limits.memory}' # 显示指定pod的内存限制
9.kubectl get pod {name} -o jsonpath='{.spec.containers[*].resources.requests.memory}'# 显示指定pod的内存请求
10. kubectl get pod {name} -o jsonpath='{.spec.containers[*].resources.requests.cpu}' # 显示指定pod的CPU请求
11. kubectl get pod {name} -o jsonpath='{.spec.containers[*].resources.limits.cpu}' # 显示指定pod的CPU限制
12. kubectl get node {name} -o jsonpath='{.status.allocatable.cpu}' # 显示指定节点可用的CPU数量
1
yaml文件生成类命令
1. kubectl apply -f {filename} # 使用yaml文件自动创建kubernetes资源
2. kubectl delete -f {filename} # 使用yaml文件自动删除kubernetes资源
3. kubectl create deployment {name} --image={image} --dry-run -o yaml > {filename} # 生成deployment的yaml文件
4. kubectl create service {name} --tcp={port}:{targetport} --dry-run -o yaml > {filename} # 生成service的yaml文件
5. kubectl create secret generic {name} --from-literal=key=value --dry-run -o yaml > {filename} #生成secret的yaml文件
6. kubectl create cronjob [job_name] --image=[image_name] --schedule='\*/1 \* \* \* \*' --restart=OnFailure --dry-run -o yaml > [file_name].yaml #创建一个CronJob实例,并将其定义文件保存到指定的YAML文件中。
7. kubectl annotate <RESOURCE_TYPE> <RESOURCE_NAME> <KEY>=<VALUE> #给指定类型的资源对象添加注释。
1
kubectl语法中的TYPE资源
下表包含常用的资源类型及其缩写别名的列表。
也可以在命令行通过kubectl api-resources得到。
Resource Name Short Names Namespaced Resource Kind
bindings TRUE Binding
componentstatuses cs FALSE ComponentStatus
configmaps cm TRUE ConfigMap
endpoints ep TRUE Endpoints
events ev TRUE Event
limitranges limits TRUE LimitRange
namespaces ns FALSE Namespace
nodes no FALSE Node
persistentvolumeclaims pvc TRUE PersistentVolumeClaim
persistentvolumes pv FALSE PersistentVolume
pods po TRUE Pod
podtemplates TRUE PodTemplate
replicationcontrollers rc TRUE ReplicationController
resourcequotas quota TRUE ResourceQuota
secrets TRUE Secret
serviceaccounts sa TRUE ServiceAccount
services svc TRUE Service
mutatingwebhookconfigurations FALSE MutatingWebhookConfiguration
validatingwebhookconfigurations FALSE ValidatingWebhookConfiguration
customresourcedefinitions crd, crds FALSE CustomResourceDefinition
apiservices FALSE APIService
controllerrevisions TRUE ControllerRevision
daemonsets ds TRUE DaemonSet
deployments deploy TRUE Deployment
replicasets rs TRUE ReplicaSet
statefulsets sts TRUE StatefulSet
tokenreviews FALSE TokenReview
localsubjectaccessreviews TRUE LocalSubjectAccessReview
selfsubjectaccessreviews FALSE SelfSubjectAccessReview
selfsubjectrulesreviews FALSE SelfSubjectRulesReview
subjectaccessreviews FALSE SubjectAccessReview
horizontalpodautoscalers hpa TRUE HorizontalPodAutoscaler
cronjobs cj TRUE CronJob
jobs TRUE Job
certificatesigningrequests csr FALSE CertificateSigningRequest
leases TRUE Lease
endpointslices TRUE EndpointSlice
events ev TRUE Event
ingresses ing TRUE Ingress
networkpolicies netpol TRUE NetworkPolicy
runtimeclasses FALSE RuntimeClass
poddisruptionbudgets pdb TRUE PodDisruptionBudget
podsecuritypolicies psp FALSE PodSecurityPolicy
clusterrolebindings FALSE ClusterRoleBinding
clusterroles FALSE ClusterRole
rolebindings TRUE RoleBinding
roles TRUE Role
priorityclasses pc FALSE PriorityClass
csidrivers FALSE CSIDriver
csinodes FALSE CSINode
storageclasses sc FALSE StorageClass
volumeattachments FALSE VolumeAttachment
根据kubectl操作,支持以下输出格式:
Output format Description
-o custom-columns= 使用逗号分隔的自定义列列表打印表
-o custom-columns-file= 使用文件中的自定义列模板打印表
-o json 输出一个JSON格式的API对象
-o jsonpath= 打印jsonpath表达式中定义的字段
-o jsonpath-file= 通过文件打印jsonpath表达式定义的字段
-o name 只打印资源名,不打印其他任何内容
-o wide 以纯文本格式输出,包含附加信息。对于pods,包含节点名
-o yaml 输出一个YAML格式的API对象
本文由 mdnice 多平台发布