k8s-增删改查
k8s-增删改查前置基础核心工具kubectl所有操作统一入口资源通用操作模板所有资源 Pod/Deployment/Service 都适用kubectl [create/apply] 增 kubectl get/describe/logs/exec 查 kubectl edit/patch 改 kubectl delete 删命名空间参数-n 命名空间名全局所有命名空间--all-namespaces / -A简写ns namespacepo poddeploy deploymentsvc servicecm configmapsec secret一、增Create / Apply创建资源两种创建方式命令行直接创建、yaml 文件创建命令行快速创建简易资源kubectl create namespace 命名空间名 # 简写等价 kubectl create ns 命名空间名 示例kubectl create ns shopkubectl create deployment deploy名称 \ --image镜像地址:标签 \ [--replicas副本数] \ [-n 命名空间] --replicas可选默认副本 1 示例kubectl create deploy nginx-dp --imagenginx:1.24 --replicas3 -n shop# ClusterIP 内部服务 kubectl create service clusterip svc名称 \ --tcp容器端口:服务端口 \ [-n 命名空间] # NodePort 外部暴露服务 kubectl create service nodeport svc名称 \ --tcp容器端口:服务端口 \ [--node-port宿主机端口] \ [-n 命名空间]# ConfigMap 键值配置 kubectl create cm cm名称 \ --from-literalkey1value1 [--from-literalkey2value2]... \ [-n 命名空间] # Secret 加密密钥 kubectl create secret generic secret名称 \ --from-literalkeyvalue \ [-n 命名空间]yaml 文件创建生产标准推荐# 单个yaml文件 kubectl create -f yaml文件路径 [-n 命名空间] # 批量创建目录下所有yaml kubectl create -f 目录路径/# 单个资源文件 kubectl apply -f yaml文件路径 [-n 命名空间] # 批量目录 kubectl apply -f 资源目录/ # 在线远程yaml kubectl apply -f http/https yaml地址kubectl run pod名称 \ --image镜像地址 \ --rm -it \ [-n 命名空间] \ -- 容器内命令 [命令参数...] 示例:kubectl run test-pod --imagebusybox --rm -it -- /bin/sh -n shop二、查Get / Describe / Logs / Exec查询资源、日志、容器kubectl get 资源类型1[,资源类型2...] [资源名称] \ [-n 命名空间 | -A] \ [-o 输出格式] \ [-l 标签key标签value]输出格式 可选值wide /yaml/json /name-l标签筛选可选参数get查看资源列表最常用# 1. 查询指定命名空间全部目标资源 kubectl get 资源类型 -n 命名空间 # 2. 查询集群所有命名空间资源 kubectl get 资源类型 -A # 3. 宽格式输出显示节点、IP kubectl get 资源类型 -o wide -n 命名空间 # 4. 输出yaml/json完整资源配置 kubectl get 资源类型 资源名称 -o yaml -n 命名空间 # 5. 根据标签过滤资源 kubectl get 资源类型 -l keyvalue -n 命名空间 # 6. 查看集群节点 kubectl get nodes # 查看所有命名空间 kubectl get ns# 输出yaml格式资源详情 kubectl get deploy nginx-dp -o yaml -n shop # 输出json kubectl get po test-pod -o json -n shop # 只输出资源名称 kubectl get po -o name -n shop# 根据标签筛选pod kubectl get po -l appnginx -n shopdescribe查看资源完整详情事件、异常、配置kubectl describe 资源类型 资源名称 [-n 命名空间]# 查看pod完整信息 kubectl describe po nginx-dp-7f96d8c79d-2xqzk -n shop # 查看deployment详情 kubectl describe deploy nginx-dp -n shop # 查看service详情 kubectl describe svc nginx-svc -n shop # 查看节点详情 kubectl describe node k8s-node01logs查看容器日志排查业务报错kubectl logs pod名称 \ [-c 容器名] \ [-f] \ [--tail日志行数] \ [-p] \ [-n 命名空间]参数说明-c多容器 Pod 指定容器单容器可省略-f实时滚动跟踪日志可选--tail仅展示末尾 N 行日志可选-p查看上一个崩溃退出的容器日志可选# 实时滚动日志跟踪输出 kubectl logs -f nginx-dp-7f96d8c79d-2xqzk -n shop # 查看最近100行日志 kubectl logs --tail100 nginx-dp-xxx -n shop # 多容器pod指定容器日志 kubectl logs -f nginx-pod -c nginx-container -n shop # 查看之前崩溃容器日志 kubectl logs -p nginx-pod -n shopexec进入 Pod 容器内部调试# 交互式进入终端 kubectl exec -it pod名称 [-c 容器名] -n 命名空间 -- 容器shell # 不进入终端直接执行单条命令 kubectl exec pod名称 [-c 容器名] -n 命名空间 -- 命令 [命令参数...]--分隔 kubectl 参数与容器内命令不可省略# 进入pod交互式终端 kubectl exec -it nginx-dp-xxx -- /bin/sh -n shop # pod多容器指定容器进入 kubectl exec -it nginx-pod -c nginx -- bash -n shop # 单条执行命令不进入终端 kubectl exec nginx-pod -- ls /usr/share/nginx/html -n shop其他查询辅助命令# 查看集群版本 kubectl version # 查看集群节点状态 kubectl get nodes # 查看集群组件健康状态 kubectl get cs # 查看api资源类型 kubectl api-resources三、改Edit / Patch / Apply修改资源配置方式 1kubectl edit 在线编辑 yaml临时快速修改kubectl edit 资源类型 资源名称 [-n 命名空间]# 修改deployment配置 kubectl edit deploy nginx-dp -n shop # 修改service kubectl edit svc nginx-svc -n shop # 修改configmap kubectl edit cm app-config -n shop方式 2kubectl apply -f yaml生产标准修改推荐kubectl apply -f 修改后的yaml文件路径 [-n 命名空间]kubectl apply -f deploy.yaml -n shop方式 3kubectl patch 局部打补丁修改无需完整 yamlkubectl patch 资源类型 资源名称 \ -n 命名空间 \ -p {一级key:{二级key:修改值}}kubectl patch deploy nginx-dp -n shop -p {spec:{replicas:5}}kubectl patch svc nginx-np -n shop -p {spec:{ports:[{port:80,targetPort:80,nodePort:30081}]}}高频修改场景命令kubectl scale deployment deploy名称 \ --replicas目标副本数 \ [-n 命名空间] # 副本调整为5个 kubectl scale deploy nginx-dp --replicas5 -n shopkubectl set image deployment deploy名称 \ 容器名新镜像地址:标签 \ [-n 命名空间] kubectl set image deploy nginx-dp nginxnginx:1.25 -n shop标签 / 注释修改# 添加/更新标签 kubectl label 资源类型 资源名称 标签key标签value [-n 命名空间] # 添加注释 kubectl annotate 资源类型 资源名称 注释key注释内容 [-n 命名空间]kubectl label deploy nginx-dp envonline -n shopkubectl annotate deploy nginx-dp authorzhangsan -n shop滚动重启 / 回滚配置更新重载# 滚动重启Deployment kubectl rollout restart deployment deploy名称 -n 命名空间 # 查看滚动更新进度 kubectl rollout status deployment deploy名称 -n 命名空间 # 版本回滚上一版 kubectl rollout undo deployment deploy名称 -n 命名空间四、删Delete删除资源删除单个指定资源kubectl delete 资源类型 资源名称 [-n 命名空间]# 删除pod kubectl delete po nginx-dp-7f96d8c79d-2xqzk -n shop # 删除deployment kubectl delete deploy nginx-dp -n shop # 删除service kubectl delete svc nginx-svc -n shop # 删除命名空间会清空ns下所有资源高危 kubectl delete ns shop根据标签批量删除kubectl delete 资源类型 -l keyvalue [-n 命名空间]# 删除所有标签appnginx的pod kubectl delete po -l appnginx -n shop通过 yaml 文件删除和 create/apply 对应kubectl delete -f yaml文件路径 [-n 命名空间] # 批量删除目录全部资源 kubectl delete -f 资源目录/kubectl delete -f deploy.yaml -n shop # 批量删除文件夹所有资源 kubectl delete -f ./manifests/清空命名空间下全部资源保留 nskubectl delete all --all -n 命名空间kubectl delete all --all -n shop通用辅助运维命令配套增删改查导出资源 yaml 备份kubectl get 资源类型 资源名称 -o yaml 本地备份文件.yaml -n 命名空间切换默认命名空间后续命令无需重复-nkubectl config set-context --current --namespace目标命名空间拷贝文件宿主机 ↔ Pod 容器# 宿主机文件 → Pod内 kubectl cp 本地文件路径 命名空间/pod名称:容器内路径 # Pod内文件 → 宿主机 kubectl cp 命名空间/pod名称:容器内路径 本地保存路径增删改查通用速查表