Kubernetes(k8s)

Kubernetes(k8s)的命令行工具 kubectl 是管理集群的核心工具,以下是日常运维和开发中最常用的命令,按功能分类整理:

一、集群与节点管理

查看集群基本信息、节点状态等。

bash 复制代码
# 查看集群信息(API Server地址、集群名称等)
kubectl cluster-info

# 查看所有节点状态(就绪状态、资源使用率等)
kubectl get nodes

# 查看节点详细信息(资源分配、标签、污点等)
kubectl describe node <节点名称>  # 例:kubectl describe node node-1

# 给节点打标签(用于调度筛选)
kubectl label nodes <节点名称> <标签键>=<标签值>  # 例:kubectl label nodes node-1 env=prod

# 给节点添加污点(阻止Pod调度到该节点,除非Pod有对应容忍)
kubectl taint nodes <节点名称> <污点键>=<污点值>:<effect>  # 例:kubectl taint nodes node-1 key=value:NoSchedule

二、命名空间(Namespace)管理

命名空间用于隔离集群资源(如开发、测试、生产环境分离)。

bash 复制代码
# 查看所有命名空间
kubectl get namespaces(或 kubectl get ns)

# 创建命名空间
kubectl create namespace <命名空间名称>  # 例:kubectl create ns dev

# 切换默认命名空间(后续命令默认操作该命名空间)
kubectl config set-context --current --namespace=<命名空间名称>

# 删除命名空间(会删除该命名空间下所有资源,谨慎操作)
kubectl delete namespace <命名空间名称>

三、Pod 管理

Pod 是 k8s 最小部署单元,包含一个或多个容器。

bash 复制代码
# 查看当前命名空间的Pod(默认default)
kubectl get pods(或 kubectl get po)

# 查看指定命名空间的Pod
kubectl get pods -n <命名空间名称>  # 例:kubectl get po -n dev

# 查看Pod详细信息(容器状态、挂载、事件等)
kubectl describe pod <Pod名称> -n <命名空间>  # 例:kubectl describe po myapp-8f9x2 -n dev

# 查看Pod日志(实时日志加 -f 参数)
kubectl logs <Pod名称> -n <命名空间>  # 例:kubectl logs myapp-8f9x2 -n dev
kubectl logs -f <Pod名称> -n <命名空间>  # 实时跟踪日志

# 进入Pod中的容器(若Pod有多个容器,需用 -c 指定容器名)
kubectl exec -it <Pod名称> -n <命名空间> -- /bin/bash  # 例:kubectl exec -it myapp-8f9x2 -n dev -- sh

# 删除Pod(若由Deployment管理,会自动重建)
kubectl delete pod <Pod名称> -n <命名空间>

# 强制删除异常Pod(状态为Terminating时)
kubectl delete pod <Pod名称> -n <命名空间> --force --grace-period=0

四、Deployment 管理

Deployment 是最常用的控制器,用于管理 Pod 的创建、更新、扩缩容等。

bash 复制代码
# 查看当前命名空间的Deployment
kubectl get deployments(或 kubectl get deploy)

# 查看指定命名空间的Deployment
kubectl get deploy -n <命名空间>

# 查看Deployment详细信息( replicas、更新策略、关联的Pod模板等)
kubectl describe deploy <Deployment名称> -n <命名空间>

# 创建/更新Deployment(通过yaml文件,推荐)
kubectl apply -f <yaml文件路径>  # 例:kubectl apply -f myapp-deploy.yaml

# 直接创建Deployment(命令行方式,适合临时测试)
kubectl create deploy <名称> --image=<镜像地址> --replicas=<副本数>  # 例:kubectl create deploy myapp --image=nginx:1.21 --replicas=3

# 扩缩容Deployment(调整副本数)
kubectl scale deploy <Deployment名称> --replicas=<目标副本数> -n <命名空间>  # 例:kubectl scale deploy myapp --replicas=5 -n dev

# 滚动更新Deployment的镜像
kubectl set image deploy <Deployment名称> <容器名>=<新镜像> -n <命名空间>  # 例:kubectl set image deploy myapp nginx=nginx:1.23 -n dev

# 查看Deployment更新历史
kubectl rollout history deploy <Deployment名称> -n <命名空间>

# 回滚到上一版本(或指定版本,加 --to-revision=<版本号>)
kubectl rollout undo deploy <Deployment名称> -n <命名空间>

# 删除Deployment(会删除关联的Pod和ReplicaSet)
kubectl delete deploy <Deployment名称> -n <命名空间>

五、Service 管理

Service 用于暴露 Pod 网络(提供固定访问入口,实现 Pod 动态扩缩容时的访问稳定性)。

bash 复制代码
# 查看当前命名空间的Service
kubectl get services(或 kubectl get svc)

# 查看指定命名空间的Service
kubectl get svc -n <命名空间>

# 查看Service详细信息(关联的Pod标签、端口映射等)
kubectl describe svc <Service名称> -n <命名空间>

# 创建Service(通过yaml文件,推荐)
kubectl apply -f <service.yaml>

# 从Deployment暴露Service(自动关联Pod标签)
kubectl expose deploy <Deployment名称> --port=<服务端口> --target-port=<容器端口> --type=<类型> -n <命名空间>
# 例:kubectl expose deploy myapp --port=80 --target-port=80 --type=NodePort -n dev(NodePort类型允许外部通过节点IP:端口访问)

# 删除Service
kubectl delete svc <Service名称> -n <命名空间>

六、配置与存储

ConfigMap(存储非敏感配置)
bash 复制代码
# 查看ConfigMap
kubectl get configmaps(或 kubectl get cm) -n <命名空间>

# 创建ConfigMap(从文件)
kubectl create configmap <名称> --from-file=<文件路径> -n <命名空间>  # 例:kubectl create cm app-config --from-file=app.properties -n dev

# 创建ConfigMap(从键值对)
kubectl create configmap <名称> --from-literal=key1=value1 --from-literal=key2=value2 -n <命名空间>

# 删除ConfigMap
kubectl delete cm <名称> -n <命名空间>
Secret(存储敏感配置,如密码、证书,数据会base64编码)
bash 复制代码
# 查看Secret
kubectl get secrets -n <命名空间>

# 创建Secret(从文件)
kubectl create secret generic <名称> --from-file=<文件路径> -n <命名空间>  # 例:kubectl create secret generic db-pass --from-file=password.txt -n dev

# 创建Secret(从键值对)
kubectl create secret generic <名称> --from-literal=username=admin --from-literal=password=123456 -n <命名空间>

# 查看Secret的实际内容(解码base64)
kubectl get secret <名称> -n <命名空间> -o jsonpath='{.data.<键名>}' | base64 -d

# 删除Secret
kubectl delete secret <名称> -n <命名空间>

七、资源查看与调试

bash 复制代码
# 查看所有资源(Pod、Deployment、Service等)
kubectl get all -n <命名空间>

# 以yaml格式查看资源详情(用于调试配置)
kubectl get <资源类型> <资源名称> -n <命名空间> -o yaml  # 例:kubectl get deploy myapp -n dev -o yaml

# 查看集群事件(排查Pod调度失败、镜像拉取失败等问题)
kubectl get events -n <命名空间>  # 按时间倒序:kubectl get events -n <命名空间> --sort-by='.lastTimestamp'

# 查看节点/Pod的资源使用情况(需集群部署metrics-server)
kubectl top nodes  # 节点CPU、内存使用率
kubectl top pods -n <命名空间>  # Pod的CPU、内存使用率

八、其他常用命令

bash 复制代码
# 从yaml文件删除资源
kubectl delete -f <yaml文件路径>

# 查看资源的API文档(了解配置字段含义)
kubectl explain <资源类型>  # 例:kubectl explain deploy.spec  # 查看Deployment的spec字段说明

# 临时运行一个Pod(用于测试,--rm表示退出后删除)
kubectl run <名称> --image=<镜像> --rm -it -- <命令>  # 例:kubectl run test --image=busybox --rm -it -- sh

以上命令覆盖了 k8s 日常操作的核心场景,实际使用时可通过 kubectl --helpkubectl <命令> --help 查看更详细的参数说明。

相关推荐
喜欢你,还有大家8 小时前
Docker-仓库-镜像制作
运维·docker·容器
小猪咪piggy13 小时前
【微服务】(4) 负载均衡
微服务·云原生·架构
岚天start14 小时前
KubeSphere在线安装单节点K8S集群
docker·容器·kubernetes·k8s·kubesphere·kubekey
Yyyy48214 小时前
标签Labels、Scheduler:调度器、k8s污点与容忍度
开发语言·kubernetes
xyhshen14 小时前
记录一次K8S跨命名空间访问 xxx.xxx.svc.cluster.local 类似内部服务不通的问题
云原生·容器·kubernetes
栗子~~15 小时前
shell-基于k8s/docker管理容器、监控模型训练所消耗的最大CPU与最大内存脚本
docker·容器·kubernetes
海鸥8115 小时前
在k8s中部署seaweedfs,上传文件到seaweedfs方法
云原生·容器·kubernetes
半梦半醒*15 小时前
k8s——pod详解2
linux·运维·docker·容器·kubernetes·负载均衡
AAA小肥杨15 小时前
K8s从Docker到Containerd的迁移全流程实践
docker·容器·kubernetes