从零到一:Kubernetes集群部署全流程实战指南
2025.09.26 16:38浏览量:0简介:本文详细讲解Kubernetes集群部署的完整流程,涵盖环境准备、核心组件安装、集群验证及运维要点,提供可落地的操作指南。
一、部署前环境准备
1.1 硬件资源规划
生产环境建议采用3节点主控集群+N工作节点架构。主控节点需配置至少2核CPU、4GB内存及50GB磁盘空间,工作节点根据业务负载动态调整,建议每节点预留20%资源用于系统调度。以AWS EC2为例,推荐使用m5.large实例作为主控节点,c5.xlarge作为计算节点。
1.2 操作系统配置
推荐使用CentOS 7/8或Ubuntu 20.04 LTS系统,需完成以下基础配置:
# 禁用SELinux(CentOS)sudo setenforce 0sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config# 配置内核参数cat <<EOF | sudo tee /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOFsudo sysctl --system
1.3 容器运行时选择
Kubernetes 1.24+版本已移除Docker支持,推荐使用containerd或CRI-O。以containerd为例安装步骤:
# 安装containerdsudo apt-get install -y containerd# 配置镜像加速sudo mkdir -p /etc/containerdcontainerd config default | sudo tee /etc/containerd/config.tomlsudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.tomlsudo systemctl restart containerd
二、核心组件安装
2.1 控制平面部署
采用kubeadm工具初始化集群,需先安装依赖组件:
# 安装kubeadm/kubelet/kubectlsudo apt-get install -y apt-transport-https ca-certificates curlcurl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpgecho "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectl
初始化主节点时需指定Pod网络CIDR(以Calico为例):
sudo kubeadm init --pod-network-cidr=192.168.0.0/16# 配置kubectlmkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
2.2 工作节点加入
在主节点获取加入命令:
kubeadm token create --print-join-command
在工作节点执行获取的命令,示例:
kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxx
2.3 网络插件部署
推荐使用Calico实现网络功能:
kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml# 验证网络状态kubectl get pods -n kube-system | grep calico
三、集群验证与测试
3.1 基础组件检查
执行以下命令验证集群状态:
# 检查节点状态kubectl get nodes# 检查核心组件Podkubectl get pods -n kube-system# 验证API Servercurl -k https://<master-ip>:6443/version
3.2 部署测试应用
创建nginx部署并暴露服务:
# nginx-deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata:name: nginx-deploymentspec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80---apiVersion: v1kind: Servicemetadata:name: nginx-servicespec:type: NodePortselector:app: nginxports:- protocol: TCPport: 80targetPort: 80
执行部署并验证:
kubectl apply -f nginx-deployment.yamlkubectl get pods -o widekubectl get service nginx-service
四、运维与故障排查
4.1 常用诊断命令
# 查看节点资源使用kubectl top nodes# 查看Pod日志kubectl logs <pod-name> -n <namespace># 描述资源详情kubectl describe node <node-name># 检查事件日志kubectl get events --sort-by='.metadata.creationTimestamp'
4.2 常见问题处理
节点NotReady状态:
- 检查kubelet服务状态:
systemctl status kubelet - 查看网络连接:
ping <api-server-ip> - 检查证书有效期:
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep "Not After"
Pod一直Pending:
- 检查资源配额:
kubectl describe quota -n <namespace> - 验证存储类:
kubectl get sc - 查看事件详情:
kubectl describe pod <pod-name>
五、生产环境优化建议
- 高可用配置:使用keepalived+haproxy实现控制平面负载均衡
- 资源限制:通过LimitRange和ResourceQuota控制资源使用
- 监控体系:集成Prometheus+Grafana实现可视化监控
- 备份方案:使用Velero定期备份ETCD数据和应用状态
- 升级策略:遵循”先测试后生产”原则,使用
kubeadm upgrade分阶段升级
六、进阶部署方案
6.1 使用kubespray自动化部署
# 安装依赖pip install ansible jmespath# 克隆kubespray仓库git clone https://github.com/kubernetes-sigs/kubespray.gitcd kubespray# 配置inventory文件cp -rfp inventory/sample inventory/mycluster# 执行部署ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b -v
6.2 混合云部署架构
采用”中心+边缘”架构时,需注意:
- 边缘节点使用
--node-labels标记特殊区域 - 通过Taint/Toleration机制控制Pod调度
- 配置联邦集群实现跨云资源管理
本教程完整覆盖了从环境准备到生产运维的Kubernetes部署全流程,通过标准化操作流程和故障处理指南,帮助运维人员快速构建稳定可靠的容器编排平台。实际部署时建议先在测试环境验证所有步骤,再逐步推广到生产环境。

发表评论
登录后可评论,请前往 登录 或 注册