0


最新版kubeadm搭建k8s(已成功搭建)

kubeadm搭建k8s(已成功搭建)

环境配置

主节点 k8s-master:4核8G、40GB硬盘、CentOS7.9(内网IP:10.16.64.67)
从节点 k8s-node1: 4核8G、40GB硬盘、CentOS7.9(内网IP:10.16.64.68)
从节点 k8s-node2: 4核8G、40GB硬盘、CentOS7.9(内网IP:10.16.64.69)

  1. # 查看配置cat /etc/*release

在这里插入图片描述

1 初始化配置

关闭selinux、swap

  1. 三台机器都需要执行
  1. # 关闭 Selinux:防止服务可能无法启动(企业中基本上都会选择关闭)sed-i's/enforcing/disabled/' /etc/selinux/config
  2. setenforce 0# 关闭 Swap:防止 kubelet 组件无法启动
  3. swapoff -ased-ri's/.*swap.*/#&/' /etc/fstab

在这里插入图片描述

设置主机名

  1. # 主服务器(bash显示主机名)
  2. hostnamectl set-hostname k8s-master
  3. bash# 从服务器1(bash显示主机名)
  4. hostnamectl set-hostname k8s-node1
  5. bash# 从服务器2(bash显示主机名)
  6. hostnamectl set-hostname k8s-node2
  7. bash

启动内核参数iptables

  1. # 访问网络插件丢包cat> /etc/sysctl.d/k8s.conf <<EOF
  2. net.bridge.bridge-nf-call-ip6tables = 1
  3. net.bridge.bridge-nf-call-iptables = 1
  4. EOF# 生效配置sysctl--system

在这里插入图片描述

2 安装docker&配置加速

  1. 三台服务器都执行

安装docker

  1. # 1 配置阿里云镜像源wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  2. # 2 yum安装docker
  3. yum -yinstall docker-ce

在这里插入图片描述

配置docker加速

  1. # 启动docker
  2. systemctl enabledocker&& systemctl start docker# 配置docker镜像加速# 配置加速器cat> /etc/docker/daemon.json <<EOF
  3. {
  4. "registry-mirrors": ["https://8er86g8v.mirror.aliyuncs.com"],
  5. "exec-opts": ["native.cgroupdriver=systemd"]
  6. }
  7. EOF# 重启 Docker
  8. systemctl restart docker

安装cri-dockerd(docker与k8s通信的中间程序:翻译官)

因为k8s的容器运行时默认不再使用docker,因此如果要通过docker作为k8s的容器运行时需要安装对应组件,让其作为中间人来让k8s与docker通信。

  1. # 安装cri-dockerd(docker与k8s通信的中间程序)# 下载wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2-3.el7.x86_64.rpm
  2. # 安装rpm-ivh cri-dockerd-0.3.2-3.el7.x86_64.rpm

修改cri-docker镜像地址

  1. # 修改cri-docker依赖的镜像地址# 修改配置vim /usr/lib/systemd/system/cri-docker.service
  2. # 将 ExecStart 配置改成下述这样:ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

在这里插入图片描述

重新加载cri-docker

  1. systemctl daemon-reload
  2. systemctl enable cri-docker && systemctl start cri-docker

3 部署k8s

安装kubeadm&kubelet&kubectl

  • kubeadm:集群的初始化部署和升级
  • kubectl:命令行工具,用于向APIServer发送指令,创建pod、Deployment等。
  • kubelet :是在每个节点上运行的代理,它负责接受主节点上的 API Server下放的指令,它还负责监控 Pod 的状态,并向 API Server 报告状态更新。此外,kubelet 与容器运行时(如 Docker 或 containerd)交互,以启动和管理容器。

用户通过kubectl向API Server发送指令,API Server接受到指令后交给kubelet去执行对应操作,同时kubelet定期上报信息给API Server。

  1. ### 三台机器上都执行# 1 添加yum源仓库cat> /etc/yum.repos.d/kubernetes.repo <<EOF
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
  5. enabled=1
  6. gpgcheck=0
  7. repo_gpgcheck=0
  8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  9. EOF# 2 安装kubeadm、kubelet、kubectl# 安装工具
  10. yum install-y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0
  11. # 设置开机自启
  12. systemctl enable kubelet

master节点执行kubeadm init初始化集群

  1. # apiserver-advertise-address 设置为主机内网ip地址# --apiserver-advertise-address=10.16.64.67 配置k8s apiserver地址,用于监听、响应其他节点请求# --service-cidr=10.96.0.0/12 配置k8s Service的IP范围# --pod-network-cidr=10.244.0.0/16 配置k8s pod的IP范围
  2. kubeadm init \
  3. --apiserver-advertise-address=10.16.64.67 \
  4. --image-repository registry.aliyuncs.com/google_containers \
  5. --kubernetes-version v1.28.0 \
  6. --service-cidr=10.96.0.0/12 \
  7. --pod-network-cidr=10.244.0.0/16 \
  8. --cri-socket=unix:///var/run/cri-dockerd.sock

出现下述输出,说明安装完成:
在这里插入图片描述
按照控制台输出提示,在 Master 节点中执行上述图片中的命令:

  1. mkdir-p$HOME/.kube
  2. sudocp-i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudochown$(id-u):$(id-g)$HOME/.kube/config

从节点执行kubeadm join加入k8s集群

接下来,将控制台中第二条命令在其他 Worker 节点中执行(并且指定一下socket):

  1. # 尾部记得指定 socket,不要直接CV控制台!# 如果不小心把 kubeadm join 命令清屏了,使用:kubeadm token create --print-join-command 重新生成
  2. kubeadm join10.16.64.67:6443 --token cxoc4h.fq38t2ftoppoedos --discovery-token-ca-cert-hash sha256:e82ccf4df53c534ab78c2aa19b1c644dc72ceb60a23ad7691c59a31170a21128 --cri-socket=unix:///var/run/cri-dockerd.sock

在这里插入图片描述

下面我们可以按照提示在

  1. Master节点

执行

  1. kubectl get nodes

查看集群节点信息。可以看到虽然其他节点加入了k8s集群,但状态是NotReady不正常的,这是因为没有下载网络插件进行通信:
在这里插入图片描述

安装Calico网络插件,让node间通信

下面我们可以按照提示在

  1. Master节点

执行

  1. kubectl get nodes

查看集群节点信息。可以看到虽然其他节点加入了k8s集群,但状态是NotReady不正常的,这是因为没有下载网络插件进行通信:
在这里插入图片描述
此时需要 Master 节点安装 Calico 网络插件,通过下述命令进行下载 calico.yaml 文件:

  1. # 下载 calico.yaml 文件cd ~
  2. wget https://xuzhibin-bucket.oss-cn-beijing.aliyuncs.com/k8s/calico.yaml

下载完毕后,修改 calico.yaml 文件中的

  1. CALICO_IPV4POOL_CIDR

配置,修改成上面 pod-network-cidr 的值:10.244.0.0/16(初始化k8s集群时,在master节点上执行的那个kubeadm init命令),如下所示:

  1. # 通过calico来完成node间的通信vim calico.yaml

在这里插入图片描述
修改完毕后,Master 应用配置文件:

  1. kubectl apply -f calico.yaml

在这里插入图片描述
等待3分钟后,查看 Pod 运行状态,发现 pods 全部状态为 Running 成功,这样就说明 k8s 集群部署完毕了!

  1. kubectl get pods -A-o wide

在这里插入图片描述
在这里插入图片描述
参考:https://blog.csdn.net/weixin_46594796/article/details/139649056


本文转载自: https://blog.csdn.net/weixin_45565886/article/details/140565761
版权归原作者 NPE~ 所有, 如有侵权,请联系我们删除。

“最新版kubeadm搭建k8s(已成功搭建)”的评论:

还没有评论