Kubernetes 是一个开源的容器编排平台,它可以帮助开发人员在集群中管理、调度和部署容器化的应用程序。如果你正在学习 Kubernetes 或者需要在生产环境中使用它,这篇文章将为你介绍如何快速地使用 Kubeadm 部署 Kubernetes 集群。
准备工作
- 至少 3 台 Linux 服务器,建议使用 Ubuntu 18.04;
- 每台服务器上设置一个用户名和密码,确保这个用户拥有 sudo 权限;
- 所有服务器之间必须能够互相通信,可以尝试使用 ping 命令测试。
安装 Docker 和 Kubernetes 工具箱
在每台服务器上执行以下命令安装必要的软件包:
-- -------------------- ---- ------- ---- ------- ------ -- ---- ------- ------- -- - ------------------- - --------------- - ---- - -------------------------- ---- ----- -------------------------------------------- - ---- ------- --- - ---- ------------------ ---- ------------ ---------------------------------------- ------------- ---- ------- ---- ------- ------ -- ---- ------- ------- -- --------- ------- ------- -------
执行完毕后,检查 Docker 和 Kubernetes 工具箱是否正确安装:
docker --version sudo systemctl status docker.service kubeadm version kubectl version kubelet --version
如果以上命令能够正常输出版本信息,则说明 Docker 和 Kubernetes 工具箱已经正确安装。
部署 Kubernetes 控制平面节点
在 "控制平面节点" 上执行以下命令:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
其中,--pod-network-cidr 参数用于指定 Kubernetes 集群中 Pod 网络的地址段。可选的地址段参见 Kubernetes 文档。
执行完毕后,根据提示执行以下命令设置 kubectl 的配置文件:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
检查 Kubernetes 控制平面节点的状态:
kubectl get node kubectl get pod -n kube-system
如果所有的 Pod 状态都为 Running,则说明 Kubernetes 控制平面节点已经运行正常。
部署 Kubernetes 工作节点
在 "工作节点" 上执行以下命令:
sudo kubeadm join <控制平面节点的 IP 地址>:<控制平面节点的端口号> --token <Token> --discovery-token-ca-cert-hash <CaCertHash>
其中,<控制平面节点的 IP 地址> 和 <控制平面节点的端口号> 需要替换为你的 Kubernetes 控制平面节点的 IP 地址和端口号,<token> 和 <cacerthash> 可以在部署控制平面节点时生成。
执行完毕后,返回到 Kubernetes 控制平面节点,运行以下命令检查工作节点是否已经加入到集群:
kubectl get nodes
如果工作节点已经加入到集群,它的状态为 Ready。
安装网络插件
部署完 Kubernetes 工作节点后,Kubernetes 集群还需要一个网络插件来支持容器之间的通信。下面演示如何使用 Calico 网络插件。
在 Kubernetes 控制平面节点上执行以下命令:
kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml
执行后,检查网络插件是否已经正确安装:
kubectl get pods -n kube-system
如果网络插件状态为 Running,则说明安装成功。
示例应用程序
下面是一个简单的 Node.js 应用程序,将在 Kubernetes 集群中部署:
-- -------------------- ---- ------- -- ------ ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - -------------- - ---- ----------------------------- -------------- --------------- ----------- --- ------------------- -- -- - ------------------- ------- -- ---- ------- ---
可以使用 Docker 将这个应用程序构建成一个容器镜像。在应用程序的根目录下创建以下 Dockerfile:
-- -------------------- ---- ------- ---- ------- ------- ---- ---- ------------- -- --- --- ------- ---- - - ------ ---- --- - ------ ------- -
然后执行以下命令构建和上传容器镜像:
docker build -t <Docker 镜像名称> . docker login docker push <Docker 镜像名称>
其中,<Docker 镜像名称> 可以自定义,需要修改为自己的 Docker Hub 用户名和应用程序名称。
最后,使用 Kubernetes 部署该应用程序。在应用程序的根目录下创建以下 deployment.yaml 文件:
-- -------------------- ---- ------- ----------- ------- ----- ---------- --------- ----- ----------- ------- ---- ----------- ----- --------- - --------- ------------ ---- ----------- --------- --------- ------- ---- ----------- ----- ----------- - ----- ----------- ------ ------- ----- ------ - -------------- ----
需要将 <Docker 镜像名称> 替换为上一步中构建的 Docker 镜像名称。
执行以下命令部署应用程序:
kubectl apply -f deployment.yaml
检查部署状态:
kubectl get deployments kubectl get pods kubectl get services
如果应用程序的状态为 Running,则说明部署成功。
总结
通过这篇文章,你已经了解了如何使用 Kubeadm 快速部署 Kubernetes 集群,并在集群中部署了一个简单的 Node.js 应用程序。希望这个教程能够帮助你更好地理解 Kubernetes 的使用方法和内部工作原理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6475c80a968c7c53b02c9334