从零开始:Kubernetes 集群部署与运维实战指南
2025.09.26 16:38浏览量:1简介:本文详述Kubernetes集群部署全流程,涵盖环境准备、组件安装、配置优化及故障排查,助力开发者掌握生产级K8s集群搭建与运维核心技能。
一、Kubernetes部署前环境准备
1.1 节点资源规划
生产环境部署前需根据业务需求进行资源评估,建议采用”3主节点+N工作节点”架构。主节点配置建议:8核CPU、32GB内存、200GB SSD存储,工作节点配置需根据容器密度调整,典型配置为16核CPU、64GB内存、500GB NVMe存储。需特别关注网络带宽,建议主节点间采用10Gbps互联。
1.2 操作系统优化
推荐使用CentOS 7/8或Ubuntu 20.04 LTS,需进行以下内核调优:
# 修改sysctl参数cat >> /etc/sysctl.d/k8s.conf <<EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1vm.swappiness = 0EOF# 加载br_netfilter模块modprobe br_netfiltersysctl --system
1.3 容器运行时选择
当前推荐使用containerd作为运行时,相比Docker可减少15%资源占用。安装命令:
# 安装containerdcat <<EOF | sudo tee /etc/modules-load.d/containerd.confoverlaybr_netfilterEOFsudo modprobe overlaysudo modprobe br_netfilter# 配置containerdmkdir -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
二、Kubernetes核心组件部署
2.1 控制平面组件安装
使用kubeadm初始化控制平面时,需特别注意API Server证书配置。推荐生成3年有效期证书:
# 生成kubeadm配置文件cat > kubeadm-config.yaml <<EOFapiVersion: kubeadm.k8s.io/v1beta3kind: ClusterConfigurationkubernetesVersion: v1.28.0controlPlaneEndpoint: "api.k8s.example.com:6443"networking:podSubnet: 10.244.0.0/16serviceSubnet: 10.96.0.0/12apiServer:certSANs:- "api.k8s.example.com"- "192.168.1.10"- "10.0.0.10"etcd:local:dataDir: /var/lib/etcdEOF# 初始化集群kubeadm init --config kubeadm-config.yaml --upload-certs
2.2 工作节点加入集群
获取join命令后,在工作节点执行前需配置cgroup驱动:
# 配置containerd cgroup驱动sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/' /etc/containerd/config.tomlsudo systemctl restart containerd# 执行join命令(示例)kubeadm join api.k8s.example.com:6443 \--token abcdef.1234567890abcdef \--discovery-token-ca-cert-hash sha256:xxxxxx \--cri-socket unix:///run/containerd/containerd.sock
2.3 网络插件部署
推荐Calico作为网络插件,支持NetworkPolicy且性能优异:
# 部署Calicokubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml# 验证网络kubectl get pods -n kube-system | grep calicokubectl run -it --rm debug --image=busybox --restart=Never -- sh# 在容器内执行ping 10.244.1.2
三、生产环境优化实践
3.1 高可用架构设计
采用堆叠式etcd架构时,需配置VIP浮动IP:
# 配置keepalivedcat > /etc/keepalived/keepalived.conf <<EOFvrrp_script chk_apiserver {script "/usr/local/bin/check_apiserver.sh"interval 3weight -2fall 2rise 1}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass K8S_HA_PASS}virtual_ipaddress {192.168.1.200/24}track_script {chk_apiserver}}EOF
3.2 资源配额管理
实施Namespace级别的资源限制:
# 创建ResourceQuotaapiVersion: v1kind: ResourceQuotametadata:name: compute-quotanamespace: devspec:hard:requests.cpu: "100"requests.memory: 200Gilimits.cpu: "200"limits.memory: 400Gipods: "50"
3.3 监控体系搭建
部署Prometheus Operator实现全维度监控:
# 安装Prometheus Operatorhelm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm install prometheus prometheus-community/kube-prometheus-stack \--namespace monitoring \--create-namespace \--set prometheus.prometheusSpec.retention=30d \--set alertmanager.enabled=true
四、故障排查与维护
4.1 常见证书问题处理
证书过期前90天需手动轮换:
# 生成新证书kubeadm certs renew all# 重启控制平面组件kubectl -n kube-system delete pod -l component=kube-apiserverkubectl -n kube-system delete pod -l component=kube-controller-managerkubectl -n kube-system delete pod -l component=kube-scheduler
4.2 etcd数据备份恢复
定期执行etcd备份:
# 创建备份目录mkdir -p /var/backups/etcdETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/server.crt \--key=/etc/kubernetes/pki/etcd/server.key \snapshot save /var/backups/etcd/snapshot-$(date +%F).db
4.3 节点故障修复
当节点处于NotReady状态时,执行以下步骤:
# 1. 检查节点状态kubectl get nodes# 2. 登录问题节点检查kubeletjournalctl -u kubelet -n 100 --no-pager# 3. 常见修复命令systemctl restart kubeletcordon/drain问题节点kubectl cordon node-namekubectl drain node-name --ignore-daemonsets --delete-emptydir-data
五、升级与扩展策略
5.1 版本升级流程
采用分阶段升级策略,先升级控制平面:
# 1. 下载新版本kubeadmapt-get update && apt-get install -y kubeadm=1.28.0-00# 2. 执行升级检查kubeadm upgrade plan# 3. 升级控制平面kubeadm upgrade apply v1.28.0# 4. 升级kubeletapt-get install -y kubelet=1.28.0-00systemctl restart kubelet
5.2 集群扩展实践
添加新节点时需注意标签管理:
# 添加节点标签kubectl label nodes node-3 disktype=ssdkubectl label nodes node-4 disktype=hdd# 创建节点亲和性部署apiVersion: apps/v1kind: Deploymentmetadata:name: ssd-appspec:template:spec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: disktypeoperator: Invalues:- ssd
本教程系统梳理了Kubernetes部署全流程,从环境准备到生产优化,涵盖32个关键操作点。实际部署时建议先在测试环境验证所有步骤,特别是证书配置和网络策略部分。对于大型集群,推荐使用Ansible或Terraform实现自动化部署,可提升部署效率60%以上。

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