简介:本文面向5年以上运维经验的技术人员,系统梳理Kubernetes核心概念、部署架构与实战流程。通过拆解Pod生命周期、资源调度策略、网络服务发现等关键模块,结合通用配置示例与部署清单,帮助读者快速掌握容器编排平台的部署能力,解决“不会K8s难找工作”的转型痛点。
传统运维模式正面临三大挑战:应用容器化趋势、微服务架构普及和云原生技术栈重构。某主流招聘平台数据显示,2023年高级运维岗位中,83%明确要求K8s技能,而5年前这一比例不足15%。
K8s的核心价值在于:
控制平面(Master Node):
kube-apiserver:集群入口,处理所有REST请求etcd:分布式键值存储,保存集群状态scheduler:资源调度器,基于节点资源、标签等分配Podcontroller-manager:包含ReplicationController、DeploymentController等核心控制器工作节点(Worker Node):
kubelet:节点代理,负责Pod生命周期管理kube-proxy:实现Service网络规则,支持iptables/IPVS模式containerd(轻量级)或cri-o(专注K8s)| 资源类型 | 作用 | 典型配置场景 |
|---|---|---|
| Pod | 最小调度单元,可包含多个容器 | 边车模式(Sidecar) |
| Deployment | 声明式应用管理,支持滚动更新 | Web服务部署 |
| Service | 统一服务入口,实现负载均衡 | 数据库访问、微服务通信 |
| ConfigMap | 解耦配置与镜像 | 环境变量、配置文件注入 |
| Ingress | 七层路由规则,支持域名路由 | 多域名网站、API网关 |
基础设施:
网络要求:
swapoff -a命令)依赖安装:
# 示例:安装containerd运行时(所有节点)cat <<EOF | sudo tee /etc/modules-load.d/containerd.confoverlaybr_netfilterEOFsudo modprobe overlay br_netfilter
# Master节点初始化kubeadm init --image-repository registry.aliyuncs.com/google_containers \--pod-network-cidr=10.244.0.0/16 \--service-cidr=10.96.0.0/12# 配置kubectlmkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config# 安装CNI网络插件(以Calico为例)kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# 在Master节点获取加入命令kubeadm token create --print-join-command# 在Worker节点执行(示例)kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \--discovery-token-ca-cert-hash sha256:xxx
# 示例:部署Nginx服务apiVersion: apps/v1kind: Deploymentmetadata:name: nginx-demospec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.23ports:- containerPort: 80
部署后验证步骤:
kubectl get pods -o widekubectl expose deployment nginx-demo --port=80 --type=NodePortcurl http://<任意节点IP>:<NodePort>metrics-server收集节点/Pod资源指标PodDisruptionBudget控制自愿中断数量anti-affinity规则避免同节点部署kubeadm upgrade plan和kubeadm upgrade applykubectl drain安全迁移Pod| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| Pod一直处于Pending状态 | 资源不足或调度失败 | 检查kubectl describe pod查看Events |
| Service无法访问 | 网络插件未正确配置 | 验证CNI插件状态,检查iptables规则 |
| Node状态为NotReady | kubelet进程异常 | 查看journalctl -u kubelet日志 |
| 镜像拉取失败 | 镜像仓库认证问题 | 配置imagePullSecret或使用公有镜像 |
技能补足计划:
认证体系推荐:
实战资源推荐:
K8s的部署能力已成为现代运维工程师的核心竞争力。通过系统掌握集群架构、资源调度、网络模型和运维体系,不仅能解决当前就业困境,更能为向SRE、云架构师等高级岗位转型奠定基础。建议从今天开始,每天投入1小时进行实操练习,6周内即可达到独立部署生产级集群的水平。