搭建Kubernetes集群(简称K8S)通常包括准备机器、安装必要的组件(如kubeadm、kubectl、kubelet),以及配置网络、初始化控制平面和将工作节点加入集群。以下是搭建Kubernetes集群的基本步骤,主要基于kubeadm工具,适合快速启动一个生产级的集群。
前提条件
- 硬件要求:
- 主控节点(Master Node)至少2核CPU,2GB内存(推荐4GB),20GB硬盘。
- 工作节点(Worker Node)至少1核CPU,1GB内存,20GB硬盘。
- 软件要求:
- 操作系统:推荐使用Ubuntu 20.04或CentOS 7。
- 所有节点应有相同的操作系统版本。
- 关闭
swap(Kubernetes要求关闭swap,以避免内存分配问题)。 - 设置静态IP地址。
- 确保防火墙配置允许Kubernetes组件的端口通信。
步骤1:环境准备
1.1 更新系统并关闭swap
# 更新系统sudo apt-get update && sudo apt-get upgrade -y# 禁用swapsudo swapoff -a# 永久禁用swapsudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
1.2 安装Docker
# 安装Docker依赖sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
# 添加Docker GPG密钥和仓库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"
# 安装Dockersudoapt-get update && sudo apt-get install -y docker-ce
# 启动Docker并设置为开机自启动sudo systemctl start dockersudo systemctl enable docker
1.3 安装kubeadm、kubelet和kubectl
# 添加Kubernetes GPG密钥curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# 添加Kubernetes仓库sudo bash -c 'cat <<EOF >/etc/apt/sources.list.d/kubernetes.listdeb http://apt.kubernetes.io/ kubernetes-xenial mainEOF'# 更新包列表并安装Kubernetes组件sudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectl# 设置kubelet开机启动sudo systemctl enable kubeletsudo systemctl start kubelet
步骤2:初始化主控节点
2.1 初始化Kubernetes控制平面(Master Node)
在主控节点上运行以下命令来初始化集群:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
--pod-network-cidr:定义Pod网络的CIDR范围,具体取决于你选择的网络插件(如Calico或Flannel)。
初始化完成后,Kubernetes会输出配置集群的下一步指令。
2.2 配置kubectl
在主控节点上为当前用户配置kubectl,以便可以使用kubectl命令与集群交互。
# 为普通用户配置kubectlmkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
步骤3:安装网络插件
Kubernetes集群需要网络插件来管理Pod之间的网络通信。以Calico为例:
kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml
或者你可以选择Flannel作为网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
网络插件安装完成后,Kubernetes集群中的所有节点和Pod才能正常通信。
步骤4:添加工作节点
在每个工作节点上运行以下命令,加入到主控节点创建的集群中。你需要在主控节点上初始化后得到的kubeadm join命令,类似如下:
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
主控节点生成的token和hash会在集群初始化输出中看到。如果忘记,可以在主控节点上运行以下命令重新获取:
kubeadm token create --print-join-command
步骤5:验证集群状态
在主控节点上运行以下命令,查看集群是否正常运行:
kubectl get nodes
所有节点应显示为Ready状态,表示已经成功加入集群。
其他步骤:集群管理与维护
- 检查Pod状态:
- 使用
kubectl get pods --all-namespaces来查看所有命名空间下的Pod状态,确保网络插件等基础设施组件正常运行。
- 使用
- 部署应用程序:
- 使用
kubectl apply -f <yaml-file>可以在集群中部署应用,yaml文件定义了应用的Pod、Service等资源。
- 使用
- Node扩展:
- 通过增加更多的工作节点,可以扩大Kubernetes集群的计算资源。
- 集群监控和日志:
- 使用工具如
Prometheus、Grafana监控集群运行状况,使用kubectl logs查看容器日志。
- 使用工具如
总结
通过kubeadm搭建Kubernetes集群是相对简便且高效的方式。你需要准备好主控节点和工作节点,安装必要的组件,然后通过kubeadm初始化主控节点,安装网络插件,并将工作节点加入集群。在集群创建完成后,便可以开始部署和管理容器化的应用程序了。