Kubernetes (K8s) 是一个开源的容器编排平台,可以自动化容器化应用程序的部署、扩展和管理。以下是使用 Ubuntu 20.04 LTS 操作系统详细部署 Kubernetes 的步骤。
确保每台机器都有一个唯一的主机名并且可以互相访问:
sudo hostnamectl set-hostname <hostname>
在每台机器的 /etc/hosts
文件中添加主节点和所有工作节点的 IP 地址和主机名:
<master-ip> master
<worker1-ip> worker1
<worker2-ip> worker2
在所有节点上安装 Docker:
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker
在所有节点上安装 kubeadm、kubelet 和 kubectl:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] 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 apt-mark hold kubelet kubeadm kubectl
在所有节点上禁用交换分区:
sudo swapoff -a
并编辑 /etc/fstab
文件,注释掉任何包含 swap 的行,以永久禁用交换:
# /swap.img none swap sw 0 0
在主节点上运行以下命令初始化 Kubernetes 集群:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
完成后,您将看到一个输出,其中包含用于加入工作节点的 kubeadm join
命令。保存此命令以供后续步骤使用。
配置 kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
使用 Flannel 作为 Pod 网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
在每个工作节点上运行 kubeadm join
命令以加入集群。该命令在主节点初始化时生成,类似如下:
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
在主节点上运行以下命令,确保所有节点都已成功加入集群:
kubectl get nodes
为了验证 Kubernetes 集群是否正常工作,可以部署一个简单的 Nginx 应用:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
获取 Nginx 服务的详细信息:
kubectl get svc nginx
通过 <master-ip>:<node-port>
访问 Nginx 应用,验证应用是否部署成功。
通过上述步骤,您已经成功在 Ubuntu 20.04 LTS 上部署了一个基本的 Kubernetes 集群。您可以进一步探索和配置 Kubernetes,以满足您的具体需求,例如设置持久存储、配置负载均衡和实现自动化扩展等。