从零到一:Kubernetes集群部署与运维全流程指南
2025.09.26 16:39浏览量:0简介:本文详细解析Kubernetes集群部署全流程,涵盖环境准备、安装配置、核心组件验证及生产级优化建议,适合运维工程师和开发人员系统学习。
一、环境准备与前置条件
1.1 硬件资源规划
生产环境建议采用3节点高可用架构,每个节点配置:
- CPU:4核以上(支持虚拟化)
- 内存:16GB以上(Worker节点建议32GB+)
- 磁盘:200GB+ SSD(系统盘与数据盘分离)
- 网络:千兆网卡(推荐万兆网络)
测试环境可使用单节点部署,但需注意资源隔离。例如在Ubuntu 22.04系统上,需预留至少4GB内存给kubelet进程。
1.2 操作系统调优
执行以下系统级配置:
# 禁用交换分区(Kubernetes要求)
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 配置内核参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
# 安装依赖组件
sudo apt update
sudo apt install -y containerd apt-transport-https curl
1.3 容器运行时选择
推荐使用containerd作为运行时:
# 配置containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/' /etc/containerd/config.toml
sudo systemctl restart containerd
二、Kubernetes集群安装
2.1 使用kubeadm初始化控制平面
# 安装kubeadm/kubelet/kubectl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
# 初始化控制节点(使用指定版本)
sudo kubeadm init --kubernetes-version v1.28.0 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--control-plane-endpoint="192.168.1.100:6443"
# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
2.2 添加Worker节点
在Worker节点执行:
# 获取加入命令(在控制节点执行)
kubeadm token create --print-join-command
# Worker节点执行返回的命令
# 示例:
kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxx
2.3 网络插件部署(Calico示例)
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
# 验证安装
kubectl get pods -n kube-system | grep calico
三、集群验证与核心功能测试
3.1 基础组件状态检查
# 查看节点状态
kubectl get nodes
# 检查核心组件Pod
kubectl get pods -n kube-system
# 验证API Server可访问性
curl -k https://192.168.1.100:6443/version
3.2 部署测试应用
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-demo
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
执行部署:
kubectl apply -f nginx-deployment.yaml
kubectl get pods -l app=nginx
3.3 服务暴露测试
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
验证服务:
kubectl apply -f nginx-service.yaml
kubectl get svc nginx-service
# 获取NodePort端口后,通过任意节点IP访问
curl http://<node-ip>:<node-port>
四、生产环境优化建议
4.1 高可用架构设计
- 控制平面三节点部署
- 使用负载均衡器(如HAProxy)暴露API Server
- etcd集群独立部署(建议5节点)
4.2 资源管理策略
# 配置ResourceQuota
apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-quota
spec:
hard:
requests.cpu: "10"
requests.memory: 20Gi
limits.cpu: "20"
limits.memory: 40Gi
4.3 监控体系搭建
推荐Prometheus+Grafana方案:
# 使用kube-prometheus-stack
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
五、常见问题处理
5.1 节点NotReady状态
检查步骤:
journalctl -u kubelet
查看日志- 验证网络插件Pod状态
- 检查
/etc/kubernetes/kubelet.conf
配置
5.2 证书过期处理
# 查看证书有效期
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep "Not After"
# 手动更新证书(控制节点)
kubeadm certs renew all
systemctl restart kubelet
5.3 版本升级流程
# 升级前备份
kubeadm config view > cluster-config.yaml
# 升级控制节点
apt install -y kubelet=1.28.1-00 kubeadm=1.28.1-00 kubectl=1.28.1-00
kubeadm upgrade apply v1.28.1
# 升级Worker节点
apt install -y kubelet=1.28.1-00 kubeadm=1.28.1-00
kubeadm upgrade node
六、进阶实践建议
- 基础设施即代码:使用Terraform管理云资源,ArgoCD实现GitOps
- 安全加固:启用PodSecurityPolicy,配置NetworkPolicy
- 性能调优:调整
--kube-reserved
和--system-reserved
参数 - 备份方案:使用Velero进行集群资源备份
本教程覆盖了从环境准备到生产运维的全流程,建议结合官方文档(https://kubernetes.io/docs/)进行深入学习。实际部署时需根据业务需求调整参数配置,并建立完善的监控告警体系。
发表评论
登录后可评论,请前往 登录 或 注册