基础资源操作
基础资源操作
[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 包,实现离线迁移。