笨方法搭建 Kubernetes 集群的教程,kubernetes集群部署
本文介绍了如何以“笨方法”搭建 Kubernetes 集群,包括准备环境、安装 Docker、安装 kubeadm、kubelet 和 kubectl、初始化集群等步骤,文章详细阐述了每个步骤的具体操作,并提供了注意事项和常见问题解决方案,通过本文,用户可以轻松搭建自己的 Kubernetes 集群,并了解集群部署的基本概念和流程。
笨方法搭建 Kubernetes 集群的教程
在云计算和容器化技术日益成熟的今天,Kubernetes 作为容器编排的领导者,被广泛应用于各种生产环境中,对于初学者或希望在特定环境下(如教育目的、小规模部署或测试环境)搭建 Kubernetes 集群的人来说,使用“笨方法”手动搭建一个 Kubernetes 集群,不仅可以加深对 Kubernetes 工作原理的理解,还能在过程中积累宝贵的实践经验,本文将详细介绍如何使用“笨方法”手动搭建一个 Kubernetes 集群,包括准备环境、安装工具、配置网络、安装控制平面节点以及加入工作节点等步骤。
准备工作
在开始之前,你需要准备几台虚拟机或物理服务器,并确保它们能够相互通信,这些服务器将分别扮演控制平面节点(control plane nodes)和工作节点(worker nodes),为了简化操作,我们假设每台服务器都运行的是 Ubuntu 20.04 操作系统。
- 获取服务器:你可以使用云服务提供商(如阿里云、腾讯云、AWS 等)提供的虚拟机服务,或者自己购买物理服务器。
- 配置网络:确保所有服务器都能通过 SSH 访问,并且它们之间可以通过内网进行通信。
- 安装基础工具:在每个节点上安装
curl
、wget
、ssh
等基础工具。
安装 Docker
Kubernetes 容器需要 Docker 来运行,因此首先需要在每个节点上安装 Docker。
sudo apt-get update sudo apt-get install -y docker.io sudo systemctl enable docker sudo systemctl start docker
安装 kubeadm、kubelet 和 kubectl
在每个节点上安装 kubeadm
、kubelet
和 kubectl
,这些工具将用于设置 Kubernetes 集群和进行集群管理。
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 - sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo systemctl enable kubelet
设置控制平面节点
选择一个节点作为控制平面节点,并运行以下命令初始化 Kubernetes 集群:
sudo kubeadm init --p2p-private-key-file /var/lib/kubeadm/pki/p2p/kubeadm-key.key --apiserver-advertise-address <CONTROL_PLANE_IP> --apiserver-bind-port 6443 --control-plane-endpoint <CONTROL_PLANE_IP>:6443 --kubernetes-version v1.21.0 --service-cidr 10.96.0.0/12 --pod-network-cidr 192.168.0.0/16
请将 <CONTROL_PLANE_IP>
替换为你的控制平面节点的 IP 地址,并指定合适的 --service-cidr
和 --pod-network-cidr
,这里我们使用了 168.0.0/16
作为 Pod 网络 CIDR,你可以根据实际情况进行调整。
初始化成功后,你会看到一条命令提示你执行 join
命令以将工作节点加入集群,请务必记下这条命令,稍后将用于添加工作节点。
加入工作节点
在剩下的节点上执行之前记录的 join
命令,将它们加入集群:
sudo kubeadm join <CONTROL_PLANE_IP>:<PORT> --token <TOKEN> --discovery-info <DISCOVERY_INFO> --tls-bootstrap-token <TOKEN> --v 4 --log-file /var/log/kubeadm-join.log --log-level debug
请将 <CONTROL_PLANE_IP>
、<PORT>
、<TOKEN>
和 <DISCOVERY_INFO>
替换为实际的值。kubeadm init
命令没有提供 token 和 discovery 信息,你可以通过以下命令生成新的 token 并获取 discovery 信息:
kubeadm token create --print-join-command > join_command.sh
然后执行 source join_command.sh
获取具体的 join 命令。
验证集群状态
在控制平面节点上,使用以下命令验证集群状态:
kubectl get nodes
你应该能看到所有已加入的工作节点和控制平面节点,如果一切正常,你的 Kubernetes 集群就已经成功搭建起来了!
安装网络插件(可选)
为了支持跨节点的 Pod 通信,你需要安装一个网络插件,如 Calico 或 Flannel,这里以 Calico 为例:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
安装完成后,再次检查节点状态:
kubectl get pods -n kube-system | grep calico | awk '{print $1}' | xargs -I {} sh -c 'echo -n "{}: "; kubectl get pod {} -n kube-system' | grep -E "Running|Pending" | wc -l' # 检查 Calico Pod 状态是否全部为 Running 或 Pending 状态(取决于你的网络延迟)
总结与扩展(可选)
至此,你已经成功使用“笨方法”手动搭建了一个基本的 Kubernetes 集群,这只是一个起点,你可以根据需要进一步扩展集群规模、添加更多的功能(如负载均衡、自动伸缩等),或者将应用部署到集群中,了解 Kubernetes 的核心概念(如命名空间、服务、存储等)以及掌握更多高级配置和最佳实践也是非常重要的,希望本文能为你提供一个良好的起点!