k8s常用命令

fifee
2
2025-08-19

基础资源操作

基础资源操作

  [root@master1 ~]# kubeadm token create --print-join-command
  kubeadm join 20.20.20.56:6443 --token prc1sh.6aso0oe30jhguv0g --discovery-token-ca-cert-hash sha256:b775cd34b4faf57582f3d28cd331afda4f9c4dbc83ab54b847f766c1afc3b831
  ​
  #污点查询
  kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.taints[*].key}{":"}{.spec.taints[*].value}{":"}{.spec.taints[*].effect}{"\n"}{end}'
  kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
  kubectl describe node node1 | grep Taints
  #添加删除污点
  kubectl taint nodes <node-name> key=value:NoSchedule
  kubectl taint nodes <node-name> key=value:NoExecute  # 这会驱逐现有Pod
  kubectl taint nodes <node-name> key:NoSchedule-
  kubectl taint nodes <node-name> key:NoExecute-
  #显示查询状态
  kubectl get pods -A -o wide | grep <node-name>
  kubectl get pods -n kube-system
  kubectl get nodes -o wide
  kubectl get pods -l app=nignx

部署与扩容

  ​
  kubectl create namespace test
  kubectl create -f nignx.yaml
  kubectl delete pod nginx-id
  kubectl delete pod nginx --grace-period=0 --force
  kubectl rollout history deployment/nginx
  kubectl rollout undo deployment/nginx --to-revision=2
  kubectl scale deployment nginx --replicas=5
  kubectl autoscale deployment nginx --min=2 --max=10 --cpu-precent=80

故障与诊断

  kubectl describe pod nginx-id -n default
  kubectl logs -f nginx- 123 --tail=100
  kubectl logs nginx-id -c php-container
  kubectl exec -it nginx-id --/bin/bash

集群管理与配置

  kubectl label node node01 disk=ssd
  kubectl taint node node2 key=value:Noschedule
  kubeclt expose deloyment nginx --port=80 --target-port=80
  kubectl get pvc -n prod

进阶场景与应用

  kubectl edit svc/nginx
  kubectl get deployment nginx -o yaml >backup.yaml
  kubectl get clusterrolebingdings
  kubectl create serviceaccount admin
  ​
  Kubernetes 容器编排
  • 深度掌握分布式架构及核心组件(etcd / kube-apiserver / scheduler / kubelet / CNI / CSI / CRI)
  • 熟练定位 Pod 常见异常:Pending、CrashLoopBackOff、ImagePullBackOff、OOMKilled、NodeNotReady
  • YAML 即代码:必含 apiVersion、kind、metadata、spec;可选 selector、taints、imagePullPolicy、ports、resources、probes、affinity
  • 启动顺序:InitContainer → 主容器 → postStart;结合 readinessProbe 与 lifecycle 钩子保证依赖就绪  
  配置管理
  • ConfigMap + Secret 统一托管配置与密钥,挂载卷或 envFrom 注入
  • 以 ServiceAccount + RBAC 细粒度控制组件访问权限,敏感数据零泄漏  
  网络管理
  • Service(ClusterIP / NodePort / LoadBalancer / Headless)提供稳定入口
  • Namespace + NetworkPolicy 做多租户隔离;CoreDNS + nodelocaldns 缓存加速;Ingress + TLS 集中暴露 HTTP/HTTPS  
  存储管理
  • 卷类型:ConfigMap、Secret、emptyDir、hostPath、PV/PVC、StorageClass
  • 按业务需求挂载只读/读写多节点共享;StorageClass 支持动态供给(如 Ceph-RBD、NFS、EBS)  
  弹性伸缩
  • HPA、VPA、Cluster-Autoscaler 基于实时指标自动扩缩 Deployment
  • 结合 PDB、Affinity 与 Taints 实现高可用与资源亲和  
  一键交付
  • 编写可维护 Helm Chart(values.yaml + templates),支持 `helm install/upgrade/rollback` 完成业务全生命周期管理

docker相关

  Docker 全栈优化(一句话概括:小、快、稳、易管)  
  镜像
  • Alpine 多阶段构建:编译阶段 `FROM maven:3.9-eclipse-temurin-17 AS builder`,运行阶段 `FROM alpine:3.19`;每层仅保留必要文件,最终镜像 ≤ 50 MB。
  • 开启 BuildKit:`DOCKER_BUILDKIT=1 docker build --progress=plain --no-cache-filter=builder`,并行编译 + 缓存精准命中。
  • 分层最佳实践:`RUN apk add --no-cache` 与 `COPY --from=builder /app /app` 分离,变更代码不破坏依赖缓存;构建后 `docker image prune -f` 自动清理 dangling 层。  
  网络
  • Bridge 模式自定义网段:`docker network create --subnet=172.20.0.0/16 app-net`,容器内 `eth0@ifxx` 虚拟网卡直连 `docker0` 桥;链路追踪用 `nicolaka/netshoot` 一键 `tcpdump/iftop`。  
  存储
  • Storage Driver overlay2,`/var/lib/docker` 独立 SSD;镜像层只读、容器层写时复制。
  • Data Volume 持久化:`docker volume create pg_data`,跨容器共享;备份 `docker run --rm -v pg_data:/data -v $(pwd):/backup alpine tar czf /backup/pg_data.tgz -C /data .`,恢复反向解压即可。  
  生命周期
  • 规范:CI 阶段打 tag → `docker commit` 归档 → 备份 → 迁移(`docker save/load`)→ 销毁前 7 天冷却期。
  • 使用 `docker-compose.yml` 声明依赖:`depends_on + healthcheck`,`docker compose up -d` 一键启停;Supervisor 在容器内按顺序拉起多进程(`priority=1/2/3`)。  
  Harbor 私有仓库
  • 单节点 Helm 一键安装:`helm install harbor harbor/harbor --set expose.type=nodePort,externalURL=https://harbor.local`。
  • 仓库脚本:`harbor-push.sh` 批量 `docker tag + docker push`,`harbor-pull.sh` 自动登录并导入 tar 包,实现离线迁移。