k8s集群搭建
主节点 (Master Node)
- 安装 kubeadm、kubelet 和 kubectl
apt-get update
apt-get install -y apt-transport-https ca-certificates curl
# 添加阿里云 Kubernetes 镜像源
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 添加 GPG 密钥
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 更新软件包列表
apt-get update
# 安装 Kubernetes 组件
apt-get install -y kubelet kubeadm kubectl
# 锁定软件包版本,防止升级
apt-mark hold kubelet kubeadm kubectl
- 禁用交换分区
禁用交换分区是正确的,因为 Kubernetes 需要在所有节点上禁用交换分区:
swapoff -a
要永久禁用交换分区,你需要编辑 /etc/fstab 文件,并注释掉任何交换分区条目:在文件中找到类似于 swap 的行,并在行首添加 # 注释掉。
vim /etc/fstab
- 初始化 Kubernetes 集群
初始化 Kubernetes 集群时,指定 --pod-network-cidr 是用于配置网络插件。192.168.0.0/16 是一个常见的网络范围,适用于许多网络插件,例如 Calico:
kubeadm init --pod-network-cidr=192.168.0.0/16
初始化成功后,配置 kubectl 的步骤是正确的:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
- 部署 Pod 网络插件
部署 Calico 网络插件的步骤也是正确的:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
确保 Calico 版本与 Kubernetes 版本兼容。如果你使用不同版本的 Kubernetes,请检查 Calico 官方文档以确保版本兼容。
- 记录工作节点加入命令
在 Kubernetes 主节点初始化成功后,会显示工作节点加入集群的命令,格式如下:
kubeadm join <Master节点的IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
记下这个命令,并在工作节点上运行以加入集群。
- 验证 Kubernetes 集群是否正常运行
检查所有节点状态:
确保所有节点都已成功加入集群并处于 Ready 状态。
kubectl get nodes
检查所有系统 Pod 状态:
确保所有系统关键 Pod(如 Calico、CoreDNS 等)都在 Running 状态。
kubectl get pods -n kube-system
工作节点 (Worker Node)
- 安装 kubeadm、kubelet 和 kubectl
apt-get update
apt-get install -y apt-transport-https ca-certificates curl
# 添加阿里云 Kubernetes 镜像源
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 添加 GPG 密钥
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 更新软件包列表
apt-get update
# 安装 Kubernetes 组件
apt-get install -y kubelet kubeadm
# 锁定软件包版本,防止升级
apt-mark hold kubelet kubeadm
- 禁用交换分区
禁用交换分区是正确的,因为 Kubernetes 需要在所有节点上禁用交换分区:
swapoff -a
要永久禁用交换分区,你需要编辑 /etc/fstab 文件,并注释掉任何交换分区条目:在文件中找到类似于 swap 的行,并在行首添加 # 注释掉。
vim /etc/fstab
- 加入Kubernetes集群
使用主节点初始化时提供的 kubeadm join 命令,将工作节点加入集群:
kubeadm join 192.168.2.147:6443 --token cicl5h.6qmwye03dno7ic4y \
--discovery-token-ca-cert-hash sha256:46f6f3209b701922bb3806d92f433fe90140efc4b0d67445ef32c92d9648687b
如果忘记了 kubeadm join 命令,可以在主节点上使用以下命令重新生成:
kubeadm token create --print-join-command
- 在master节点验证集群
kubectl get nodes
安装Kubernetes Dashboard
- 在主节点上运行以下命令来部署 Kubernetes Dashboard:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
这将部署 Kubernetes Dashboard 并在 kubernetes-dashboard 命名空间中创建所需的资源
- 创建仪表盘访问权限
为了能够访问 Kubernetes Dashboard,您需要创建一个服务账户并绑定合适的权限。
创建服务账户并绑定 ClusterRole:
kubectl create serviceaccount dashboard-admin-sa -n kubernetes-dashboard
kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin-sa
获取访问 Dashboard 的令牌:
kubectl -n kubernetes-dashboard create token dashboard-admin-sa
执行上述命令后,您会获得一个访问 Kubernetes Dashboard 的 JWT(JSON Web Token)。将此令牌保存下来,因为您需要在登录 Dashboard 时使用它。
- 访问 Kubernetes Dashboard
为了访问 Dashboard,您可以通过本地代理的方式访问,这种方式更加安全:
启动本地代理:
kubectl proxy
代理启动后,在浏览器中访问以下 URL:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
在登录页面中,选择“令牌”作为登录方式,并输入之前获取的令牌
- 通过公网 IP 访问 Kubernetes Dashboard
修改 Dashboard 服务类型为 NodePort
Kubernetes Dashboard 默认使用 ClusterIP 类型的服务,需要将其更改为 NodePort 类型,以便可以通过外部 IP 访问。
首先,编辑 Dashboard 服务配置:
kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard
保存并退出编辑器。
获取节点 IP 和端口
节点 IP 是您的主节点或工作节点的 IP 地址,端口是您在上一步中指定的 nodePort 端口(或 Kubernetes 自动分配的端口)。
使用以下命令获取 NodePort 端口:
kubectl -n kubernetes-dashboard get svc kubernetes-dashboard
现在,您可以通过以下 URL 访问 Kubernetes Dashboard:
https://94.74.104.32:31972
输入令牌登录即可