首页 > 其他分享 >(转)高效率运维K8s 这些常用命令你得会

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

时间:2024-08-20 16:17:31浏览次数:10  
标签:kubectl name 运维 get -- 常用命令 pod K8s TRUE

原文: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 多平台发布

 

标签:kubectl,name,运维,get,--,常用命令,pod,K8s,TRUE
From: https://www.cnblogs.com/liujiacai/p/18369636

相关文章

  • k8s中apply资源文件和replace资源文件的区别
    v1.29.2版本的k8s中资源对象api-resource一共有75种,比如pod,serverice等等创建资源对象的时候,一般是写资源对象文件,里面主要字段是kind\apiVersion\metadata\spec\status在我们使用资源对象文件创建资源实例的时候经常用到kubectlapply-f resourcefilename.yamlkube......
  • 动手练习 K8s
    在上篇文章中,简单介绍了K8s的原理。单单通过文字,不足以帮助我们学习K8s。所以本文通过实际的例子,由浅到深带大家在本地动手走一遍K8s的操作流程,旨在加深对K8s的理解。我们将从最基础的container容器的定义出发,动手去跑pod、deployment、service、ingress、namesp......
  • 在K8S中,什么是kubernetes?
    Kubernetes是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。Kubernetes(简称K8s)是一个功能强大的工具,它的设计初衷是提高在多个主机上运行的容器化应用的部署、伸缩、更新和维护过程的效率和简易性[1]。Kubernetes诞生于Google内部多年的容器管理技术积累,并......
  • 在K8S中,Kubernetes的组件有哪些?
    Kubernetes(K8s)是一个复杂的系统,由多个核心组件组成,这些组件协同工作来实现容器化应用的部署、扩展和管理。下面是Kubernetes的主要组件及其功能:1.控制平面组件控制平面负责管理集群的状态,包括调度、部署和维护集群中运行的容器化应用。控制平面组件通常运行在一个或多个控制节......
  • 在K8S中,在主机和容器上部署应用程序有什么区别?
    在Kubernetes中部署应用程序有两种主要的方式:直接在主机上部署(也称为裸金属或非容器化部署)和在容器中部署。这两种方式有着本质的区别,下面将详细介绍它们的特点和应用场景。1.直接在主机上部署应用程序特点:直接运行:应用程序直接安装在操作系统上,没有额外的容器层。资源利......
  • 在K8S中,Kubernetes与Docker有什么关系?
    Kubernetes和Docker都是现代云原生技术栈的重要组成部分,但它们各自解决的问题领域不同。下面详细介绍它们之间的关系以及区别:1.DockerDocker是一个流行的容器化平台,它允许开发者将应用程序及其依赖打包成一个轻量级、可移植的容器。这样做的好处包括:隔离性:每个容器都有自......
  • 在K8S中,Kube-proxy有什么功能?
    Kube-proxy是Kubernetes中的一个核心组件,它运行在每个节点上,负责实现Kubernetes服务(Services)的概念。Kube-proxy主要有以下功能:1.主要功能服务发现:Kube-proxy实现了服务发现机制,使得Pod能够通过服务名找到对应的服务端点(Endpoints)。负载均衡:当Pod需要访问......
  • k8s 手动更新 seldon core ca证书
    前言seldoncore报错:x509:certificatehasexpiredorisnotyetvalid:currenttime这是因为seldoncore默认的证书有效期为一年,需要helm重新安装才行,或者在安装seldoncore时启用了certManager自动更新证书helminstallseldon-coreseldon-core-operator--namespac......
  • Linux---systemctl常用命令以及service文件配置
    简介1.1什么是systemctl命令        systemctl是一个在Linux系统中用于管理系统服务的命令。它是systemd这个初始化系统的一部分,通过控制和监视系统的服务和单位文件,提供了对系统进程的强大管理功能。1.2systemctl的作用和用途        systemctl可以用于......
  • K8S部署redis集群,并导入单机版redis数据到集群
    可能格式不怎么好看,就是提供一个思路1、编写一个config文件,给挂载到k8s容器里。这个文件是从网上找的,这个脚本没什么改的,redis的配置文件,可以根据自己的需求做修改添加config.yaml文件apiVersion:v1kind:ConfigMapmetadata:name:redis-cluster-configdata:fix-ip.......