使用 kubeadm搭建k8s集群
使用Ubuntu22.4
| 角色 | 主机名称 | IP地址 |
|---|---|---|
| Master | master | 192.168.40.140 |
| Node | node1 | 192.168.40.141 |
| Node | node2 | 192.168.40.142 |
一、环境准备
更新系统和关闭交换分区
sudo apt-get update sudo apt-get upgrade -y sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
设置主机名和 IP 地址,可克隆虚拟机后再分别设置
确保每台机器的主机名唯一并设置静态 IP 地址。
sudo hostnamectl set-hostname <hostname>
修改 hosts 文件
在每台机器的 /etc/hosts 文件中添加所有节点的 IP 和主机名映射。
sudo nano /etc/hosts <master-ip> master <worker1-ip> worker1 <worker2-ip> worker2
安装必要的工具
sudo apt-get install -y apt-transport-https ca-certificates curl
二、安装 Docker
sudo apt-get update sudo apt-get install -y docker.io sudo systemctl enable docker sudo systemctl start docker
三、安装 kubeadm、kubelet 和 kubectl
1. 添加 Kubernetes 仓库
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"
2. 安装 Kubernetes 组件
sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl
问题一:安装时报错
症状:要么抛出异常提示Unable to locate package kubectl,要么提示
The repository ‘https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease’ is not signed
依序解决:
使用国内镜像1: echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
安装GPG秘钥2:curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg |sudo apt-key add -
四、初始化 Kubernetes 集群
在主节点上运行以下命令进行集群初始化:
1. 使用 kubeadm 初始化集群
sudo kubeadm init --pod-network-cidr=192.168.40.0/24
2. 配置 kubectl
初始化完成后,会输出一些后续步骤的指示。按提示在主节点上配置 kubectl:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
3. 安装网络插件
安装网络插件 Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
五、加入工作节点
需将master上的证书分发至node节点
# 修改 SSH 配置允许 root 登录 sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config # 如果希望用密码登录(可选) sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config # 重启 SSH 服务 sudo systemctl restart sshd scp /etc/kubernetes/pki/ca.crt root@worker1:/etc/kubernetes/pki/ scp /etc/kubernetes/pki/sa.key root@worker1:/etc/kubernetes/pki/ scp /etc/kubernetes/pki/sa.pub root@worker1:/etc/kubernetes/pki/ scp /etc/kubernetes/pki/front-proxy-ca.crt root@worker1:/etc/kubernetes/pki/ scp /etc/kubernetes/pki/front-proxy-ca.key root@worker1:/etc/kubernetes/pki/ scp /etc/kubernetes/pki/etcd/ca.crt root@worker1:/etc/kubernetes/pki/etcd/
在每个工作节点上运行 kubeadm join 命令,将其加入到集群中。这个命令可以在初始化主节点后得到。
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
六、验证集群
在主节点上运行以下命令验证集群状态:
kubectl get nodes
如果所有节点的状态都是 Ready,则说明集群搭建成功。
使用win docker desktop搭建,物理机关闭hype-v等,Vm中启用虚拟化
之后安装dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml kubectl proxy kubectl create serviceaccount admin-user -n kubernetes-dashboard kubectl create clusterrolebinding admin-user-binding --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user kubectl -n kubernetes-dashboard create token admin-user

