Kubernetes集群搭建及Dashboard与Ingress部署指南
Kubernetes(简称K8s)是一种开源的容器编排平台,旨在自动化容器化应用程序的部署、扩展和管理。本文将详细介绍如何在Ubuntu 22.04系统上搭建Kubernetes 1.30.1集群,并开启Dashboard 2.7.0,部署Ingress NGINX控制器(版本1.10.1)。
环境准备
首先,确保你的系统是Ubuntu 22.04,并且具有两个及以上的机器节点。我们将选择一台作为主节点(Master),其余作为工作节点(Worker)。
1. 更新系统
sudo apt update && sudo apt upgrade -y
2. 安装基本工具
安装curl
, apt-transport-https
, ca-certificates
, gnupg
, software-properties-common
sudo apt install -y curl apt-transport-https ca-certificates gnupg software-properties-common
3. 安装Docker
K8s需要容器运行时,Docker是最常用的选择。
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
为了让非root用户能够使用Docker,可以将该用户添加到docker组中。
sudo usermod -aG docker $USER
4. 安装Kubeadm、Kubelet和Kubectl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-add-repository "deb https://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt update
sudo apt install -y kubelet=1.30.1-00 kubeadm=1.30.1-00 kubectl=1.30.1-00
sudo apt-mark hold kubelet kubeadm kubectl
5. 初始化K8s集群
在主节点运行以下命令进行初始化,设置Pod网络 CIDR。
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
完成后,按照指示执行后续命令配置kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
6. 部署网络插件
我们将使用Flannel作为网络插件。可以通过以下命令进行安装:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel.yml
7. 加入工作节点
在其他工作节点上,执行以下命令,替换为主节点初始化时给出的kubeadm join
命令:
kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
8. 验证集群状态
使用以下命令检查集群状态:
kubectl get nodes
你应该看到主节点和所有工作节点的状态为Ready
。
9. 安装Kubernetes Dashboard
使用以下命令安装Dashboard:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
为了访问Dashboard,我们还需要创建一个服务账户和绑定角色:
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
将上述内容保存为dashboard-admin-user.yaml
,并执行以下命令:
kubectl apply -f dashboard-admin-user.yaml
获取登录token:
kubectl get secrets -n kubernetes-dashboard
kubectl describe secret <token-name> -n kubernetes-dashboard
10. 安装Ingress NGINX控制器
Ingress是Kubernetes中的资源,用于管理外部访问到服务。我们将安装Ingress NGINX控制器:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.1/deploy/static/provider/cloud/deploy.yaml
11. 验证Ingress控制器
检查Ingress NGINX控制器状态:
kubectl get pods --namespace ingress-nginx
结论
到此为止,我们已经在Ubuntu 22.04上成功搭建了Kubernetes 1.30.1集群,安装了Dashboard 2.7.0和Ingress NGINX控制器。你现在可以开始在Kubernetes中部署你的应用程序。希望这篇文章对你有所帮助!