菜鸟科技网

k8s基础命令有哪些?

Kubernetes(简称K8s)作为容器编排领域的核心工具,其基础命令是运维人员和开发者必须掌握的核心技能,通过命令行与K8s集群交互,可以实现对容器应用的部署、管理、监控和调试,以下从集群信息查看、资源管理、应用部署与调试、配置与密钥管理四个维度,详细解析K8s基础命令的使用场景和操作方法。

k8s基础命令有哪些?-图1
(图片来源网络,侵删)

集群信息查看命令

在操作K8s集群前,需先确认集群状态和节点信息。kubectl作为K8s的命令行工具,提供了多种命令用于获取集群概览。

  • kubectl cluster-info:显示集群控制平面和服务的访问地址,用于快速验证集群是否正常运行,输出会包含Kubernetes API服务器的地址和kubernetes-dashboard的访问链接。
  • kubectl get nodes:列出集群中所有节点的状态,包括节点名称、角色(Master/Worker)、状态(Ready/NotReady)、版本等信息,通过kubectl get nodes -o wide可扩展显示节点的IP地址、kubelet版本等更多细节。
  • kubectl version:显示kubectl客户端和K8s服务端的版本信息,用于检查版本兼容性,若需查看更详细的版本信息(如Git commit ID、构建日期),可使用kubectl version --short=false

通过kubectl get componentstatuses(或简写kubectl get cs)可查看集群核心组件(如etcd、kube-apiserver、kube-controller-manager)的健康状态,帮助排查集群级故障。

资源管理命令

K8s中所有对象(如Pod、Deployment、Service等)均被视为资源,kubectl提供了统一的增删改查操作。

资源查询

  • kubectl get <资源类型> [名称] -n <命名空间>:查询指定类型的资源。kubectl get pods -n default查看default命名空间下的所有Pod;kubectl get deployments -A-A表示所有命名空间)查看集群中所有Deployment。
  • kubectl describe <资源类型> <名称> -n <命名空间>:显示资源的详细信息,包括事件、标签、注解、容器状态等。kubectl describe pod nginx-pod -n default可查看Pod的启动日志、容器镜像拉取状态、资源限制等,常用于排查Pod异常。
  • kubectl get <资源类型> -o <输出格式>:以指定格式输出结果。kubectl get pods -n default -o yaml输出YAML格式的Pod配置;kubectl get nodes -o jsonpath={.items[*].status.addresses[0].address}仅提取节点的IP地址。

资源操作

  • 创建资源
    • kubectl create -f <yaml文件>:通过YAML/JSON文件创建资源,例如kubectl create -f deployment.yaml
    • kubectl apply -f <yaml文件>:声明式创建或更新资源(推荐使用,支持多次应用而不报错)。
  • 删除资源
    • kubectl delete <资源类型> <名称> -n <命名空间>:删除指定资源,例如kubectl delete pod nginx-pod -n default
    • kubectl delete -f <yaml文件>:根据文件删除所有资源。
  • 编辑资源
    • kubectl edit <资源类型> <名称> -n <命名空间>:直接编辑资源的YAML配置并保存,例如kubectl edit deployment nginx-deployment -n default会打开编辑器修改Deployment的副本数或镜像版本。

应用部署与调试命令

应用部署

以Nginx应用为例,通过Deployment和Service实现部署和暴露:

k8s基础命令有哪些?-图2
(图片来源网络,侵删)
  • 创建Deploymentkubectl create deployment nginx --image=nginx:latest --replicas=3 -n default,创建一个包含3个副本的Nginx Deployment。
  • 暴露Servicekubectl expose deployment nginx --port=80 --target-port=80 -n default,将Deployment的80端口通过ClusterIP Service暴露给集群内部访问。

应用调试

  • 查看Pod日志
    • kubectl logs <Pod名称> -n <命名空间>:查看Pod的标准输出日志,例如kubectl logs nginx-5f7d7d8f9b-abcde -n default
    • kubectl logs <Pod名称> -n <命名空间> --follow-f):实时跟踪日志输出,适合调试实时应用问题。
    • kubectl logs <Pod名称> -n <命名空间> --previous:查看之前已终止容器的日志(适用于Pod重启场景)。
  • 进入Pod容器
    • kubectl exec -it <Pod名称> -n <命名空间> -- /bin/bash:进入容器的交互式shell,例如kubectl exec -it nginx-5f7d7d8f9b-abcde -n default -- /bin/bash
  • 扩缩容与更新
    • kubectl scale deployment <Deployment名称> --replicas=<数量> -n <命名空间>:手动扩缩容,例如kubectl scale deployment nginx --replicas=5 -n default
    • kubectl set image deployment/<Deployment名称> <容器名>=<新镜像> -n <命名空间>:滚动更新镜像,例如kubectl set image deployment/nginx nginx=nginx:1.21 -n default

配置与密钥管理命令

ConfigMap管理

ConfigMap用于存储非敏感的配置数据,可通过文件或命令行创建:

  • 从文件创建kubectl create configmap app-config --from-file=config.yaml -n default,将config.yaml存入ConfigMap。
  • 从字面量创建kubectl create configmap app-config --from-literal=key1=value1 --from-literal=key2=value2 -n default
  • 查看ConfigMapkubectl get configmap app-config -n default -o yaml

Secret管理

Secret用于存储敏感数据(如密码、Token),支持Base64编码:

  • 创建Secretkubectl create secret generic db-secret --from-literal=password=yourpassword -n default,密码会被自动Base64编码。
  • 查看Secretkubectl get secret db-secret -n default -o yaml,需通过echo 'yourpassword' | base64 -d解码查看实际内容。

常见资源类型及操作示例

资源类型 缩写 示例命令 说明
Pod po kubectl get pods -n default 查询Pod列表
Deployment deploy kubectl get deployments -n default 查询Deployment列表
Service svc kubectl get services -n default 查询Service列表
ConfigMap cm kubectl get configmaps -n default 查询ConfigMap列表
Secret kubectl get secrets -n default 查询Secret列表
Namespace ns kubectl create namespace test 创建命名空间

相关问答FAQs

Q1: 如何排查Pod一直处于Pending状态?
A: Pod处于Pending状态通常是因为资源不足或镜像无法拉取,可通过以下步骤排查:

  1. 使用kubectl describe pod <Pod名称> -n <命名空间>查看事件,检查是否有FailedScheduling事件(节点资源不足)或ImagePullBackOff事件(镜像拉取失败)。
  2. 若节点资源不足,可通过kubectl describe node <节点名称>查看节点的CPU、内存使用情况,或考虑增加节点资源。
  3. 若镜像拉取失败,检查镜像名称是否正确、是否有权限访问镜像仓库(如需配置镜像拉取密钥,可通过kubectl create secret docker-registry创建)。

Q2: 如何更新Deployment的镜像版本并回滚?
A: 更新和回滚Deployment镜像的步骤如下:

k8s基础命令有哪些?-图3
(图片来源网络,侵删)
  1. 更新镜像:使用kubectl set image deployment/<Deployment名称> <容器名>=<新镜像版本> -n <命名空间>,例如kubectl set image deployment/nginx nginx=nginx:1.21 -n default,K8s会自动触发滚动更新。
  2. 查看更新状态:通过kubectl rollout status deployment/<Deployment名称> -n <命名空间>确认更新进度,或kubectl get pods -n default查看Pod是否使用新镜像。
  3. 回滚版本:若更新后出现问题,可通过kubectl rollout undo deployment/<Deployment名称> -n <命名空间>回滚到上一个版本;若需回滚到指定版本(如revision=2),使用kubectl rollout undo deployment/<Deployment名称> --to-revision=2 -n <命名空间>
分享:
扫描分享到社交APP
上一篇
下一篇