☰
Kubernetes集群安装与配置完整指南
2026/10/31 11:54:48 网站建设 项目流程

1. Kubernetes安装前的环境准备

在开始Kubernetes安装之前,我们需要确保基础环境已经准备就绪。作为一个在生产环境部署过数十个Kubernetes集群的老兵,我强烈建议不要跳过这个环节,否则后续会出现各种"玄学"问题。

1.1 系统要求检查

首先确认你的主机满足以下最低要求:

  • 操作系统:Ubuntu 16.04+/CentOS 7+/Debian 9+(个人推荐Ubuntu 20.04 LTS)
  • CPU:至少2核(生产环境建议4核以上)
  • 内存:至少2GB(生产环境建议8GB以上)
  • 磁盘:至少20GB可用空间
  • 网络:每个节点能互相通信,且能访问外网

重要提示:所有节点需要确保时间同步,建议安装NTP服务。我在实际部署中遇到过因为时间不同步导致的证书验证失败问题,排查了整整一天!

1.2 基础服务配置

在所有节点上执行以下操作:

# 关闭swap(Kubernetes 1.8+要求) sudo swapoff -a # 永久禁用,编辑/etc/fstab注释swap行 sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 关闭SELinux(兼容性问题高发区) sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 配置防火墙规则(如果使用firewalld) sudo firewall-cmd --permanent --add-port=6443/tcp sudo firewall-cmd --permanent --add-port=2379-2380/tcp sudo firewall-cmd --permanent --add-port=10250/tcp sudo firewall-cmd --permanent --add-port=10251/tcp sudo firewall-cmd --permanent --add-port=10252/tcp sudo firewall-cmd --reload

1.3 容器运行时安装

Kubernetes支持多种容器运行时,但Docker仍然是最成熟的选择。安装Docker CE版本:

# Ubuntu示例 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install -y docker-ce=5:19.03.15~3-0~ubuntu-focal # 配置Docker使用systemd作为cgroup driver(必须!) sudo mkdir /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF sudo systemctl enable docker && sudo systemctl daemon-reload && sudo systemctl restart docker

2. Kubernetes组件安装与配置

2.1 安装kubeadm、kubelet和kubectl

在所有节点上执行:

# 添加Kubernetes源 sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update # 安装指定版本(这里选择1.22.5稳定版) sudo apt-get install -y kubelet=1.22.5-00 kubeadm=1.22.5-00 kubectl=1.22.5-00 sudo apt-mark hold kubelet kubeadm kubectl # 防止自动升级

2.2 初始化控制平面节点

选择一个节点作为master(现在叫control-plane节点),执行初始化:

sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=<节点内网IP> \ --kubernetes-version=v1.22.5 \ --image-repository=registry.aliyuncs.com/google_containers

实战经验:国内用户一定要指定--image-repository使用阿里云镜像,否则会因为网络问题导致镜像拉取失败。我在第一次部署时没注意这点,等了两个小时才发现卡在镜像下载。

成功后会输出类似以下信息:

Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

按照提示配置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.3 安装网络插件

Kubernetes需要网络插件才能实现Pod间通信。这里选择Flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

检查安装状态:

kubectl get pods -n kube-system # 等待所有Pod状态变为Running

3. 工作节点加入集群

3.1 获取加入命令

在master节点上查看加入命令:

kubeadm token create --print-join-command

会输出类似:

kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

3.2 在工作节点上执行加入命令

在每个工作节点上执行上面获取的命令(需要sudo权限):

sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

成功后会显示:

This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details.

3.3 验证集群状态

回到master节点,执行:

kubectl get nodes

应该能看到所有节点状态为Ready。如果看到NotReady,通常是网络插件还没完全启动,等待几分钟再检查。

4. 常见问题排查与优化

4.1 安装过程中的典型错误

问题1:kubeadm init卡住

  • 检查docker是否正常运行:sudo systemctl status docker
  • 查看具体日志:journalctl -xeu kubelet
  • 常见原因:镜像拉取失败,可以手动拉取:sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers

问题2:节点无法加入集群

  • 检查6443端口是否开放:telnet <master-ip> 6443
  • 检查token是否过期(默认24小时):kubeadm token list
  • 重新生成token:kubeadm token create --print-join-command

4.2 生产环境优化建议

  1. 高可用部署:生产环境应该部署多个control-plane节点,使用负载均衡器访问API Server。

  2. 证书管理:kubeadm默认证书有效期1年,建议使用kubeadm alpha certs renew定期更新,或配置外部证书。

  3. 资源预留:为系统进程和Kubernetes组件预留资源,编辑/var/lib/kubelet/config.yaml:

    systemReserved: cpu: "500m" memory: "500Mi" kubeReserved: cpu: "500m" memory: "500Mi"
  4. 日志收集:配置/etc/docker/daemon.json中的日志轮转,避免磁盘被日志占满。

4.3 常用诊断命令

# 查看集群状态 kubectl get cs # 查看事件(排查Pod创建失败等问题) kubectl get events --sort-by='.metadata.creationTimestamp' # 查看组件日志 journalctl -u kubelet -f kubectl logs -n kube-system <pod-name> # 诊断网络问题 kubectl run -it --rm --image=nicolaka/netshoot test -- /bin/bash # 在容器内执行ping/nslookup等命令

5. 后续配置建议

集群安装完成后,建议进行以下配置:

  1. 安装Dashboard(可选):

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml kubectl proxy # 然后访问 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
  2. 配置存储:根据需求安装NFS/CSI驱动或云厂商的存储插件。

  3. 配置Ingress Controller:如Nginx Ingress:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.4/deploy/static/provider/cloud/deploy.yaml
  4. 配置监控:安装Prometheus Operator或使用云厂商的监控服务。

经过以上步骤,你应该已经成功部署了一个生产可用的Kubernetes集群。记住,Kubernetes的安装只是开始,真正的挑战在于日常运维和优化。建议从简单的应用开始部署,逐步熟悉各种资源和控制器的工作原理。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询