高效率运维K8s 这些常用命令你得会

# 高效率运维K8s 这些常用命令你得会 > 日常K8s运维工作中难免会连接K8s集群哐哐哐的输出命令来进行Kubernetes应用运维工作。今天就总结一些常用的kubectl命令及应用调试技巧。以便于日常查阅或提高效率! ## 基本操作命令 ```bash 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信息 ``` ## 资源操作类命令 ```bash # 创建资源 kubectl create -f xxx.yaml # 应用资源 kubectl apply -f xxx.yaml # 应用资源,该目录下的所有 .yaml, .yml, 或 .json 文件都会被使用 kubectl apply -f # 创建test名称空间 kubectl create namespace test # 删除资源 kubectl delete -f xxx.yaml kubectl delete -f # 删除指定的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标签 ``` ## 资源部署和管理类命令 ```bash 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资源 ``` ## 资源维护类命令 ```bash 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 #将节点设置为不可调度状态,以便于维护和升级该节点,并避免丢失重要的运行数据 kubectl cordon #阻止新的 Pod 调度到特定的节点上,以避免在节点维护期间出现过多负载 kubectl uncordon #允许新的 Pod 调度到指定的节点上,以恢复该节点的正常工作状态。 kubectl debug -c -it -- /bin/bash #在指定的 Pod 中的容器中运行一个新的 bash 进程,以便进行调试。 ``` ## 进阶命令 ```bash 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服务的代理端口 ``` ## 自定义资源类型查看 ```bash 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} # 显示指定自定义资源的定义 ``` ## 日志及资源使用查看 ```bash 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数量 ``` ## yaml文件生成类命令 ```bash 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 = #给指定类型的资源对象添加注释。 ``` # 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](https://mdnice.com/?platform=6)多平台发布
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容