当前位置:   article > 正文

一、【K8S】CentOS 7使用kubeadm详细流程搭建Kubernets V1.25集群

一、【K8S】CentOS 7使用kubeadm详细流程搭建Kubernets V1.25集群

目录

一、部署准备工作

二、Master安装


一、部署准备工作

最小化搭建 master+node+node集群

虚拟机配置均为2核+2GB内存+20GB硬盘

工具 VMware + Xshell

先确定三台虚拟机的名字和ip

  1. k8s-master 192.168.121.134
  2. k8s-node1 192.168.121.135
  3. k8s-node2 192.168.121.136

二、Master安装

1.关闭防火墙

sudo systemctl stop firewalld sudo systemctl disable firewalld

2.关闭 selinux

sudo sed -i 's/enforcing/disabled/' /etc/selinux/config

3.关闭 swap

  1. sudo vim /etc/fstab # 永久关闭
  2. #注释掉下列配置
  3. # /dev/mapper/centos-swap swap swap defaults 0 0

4.重启机器

  1. sudo systemctl reboot
  2. free -m

# swap下的值都为0表示swap已被关闭 

5.设置主机名

sudo hostnamectl set-hostname k8s-master

6.在 k8s-master机器添加hosts

  1. vim /etc/hosts
  2. # 插入以下语句
  3. 192.168.121.134 k8s-master
  4. 192.168.121.135 k8s-node1
  5. 192.168.121.136 k8s-node2

7.将桥接的IPv4流量传递到iptables

  1. sudo cat > /etc/sysctl.d/k8s.conf << EOF
  2. net.bridge.bridge-nf-call-ip6tables = 1
  3. net.bridge.bridge-nf-call-iptables = 1
  4. net.ipv4.ip_forward = 1
  5. EOF
  6. # 使其生效
  7. sudo sysctl --system

8.设置时间同步

  1. sudo yum install ntpdate -y
  2. sudo ntpdate time.windows.com

9.添加k8s yum源

  1. sudo 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
  9. https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  10. EOF

10、安装containerd

  1. # 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
  2. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. # 设置 yum 源
  4. # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  5. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  6. sudo yum install containerd -y
  7. sudo containerd config default > /etc/containerd/config.toml
  8. sudo systemctl restart containerd
  9. sudo systemctl status containerd
  10. # 替换 containerd 默认的 sand_box 镜像,编辑 /etc/containerd/config.toml
  11. sudo vim /etc/containerd/config.toml
  12. #找到 sandbox_image字段,修改为:
  13. sandbox_image = "registry.aliyuncs.com/k8sxio/pause:3.9"
  14. # 重启containerd
  15. sudo systemctl daemon-reload
  16. sudo systemctl restart containerd

11、配置containerd 中国镜像源

  1. sudo vim /etc/containerd/config.toml
  2. 在 [plugins."io.containerd.grpc.v1.cri".registry] 下把 config_path 的值修改为 "/etc/containerd/certs.d"
  3. sudo mkdir -p /etc/containerd/certs.d/docker.io
  4. sudo vim /etc/containerd/certs.d/docker.io/config.toml
  5. 写入:
  6. server = "https://docker.io"
  7. [host."https://registry.docker-cn.com"]
  8. sudo systemctl restart containerd

11、查看可以安装的版本

sudo yum list kubelet --showduplicates | sort -r

12、安装kubelet、kubeadm、kubectl 指定版本,我们使用kubeadm方式安装k8s集群

sudo yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0

13.命令启动kubelet服务

  1. sudo systemctl start kubelet
  2. # 开机自启
  3. sudo systemctl enable kubelet

至此 master节点已经部署完毕了,克隆master节点,并修改另外两台机器的ip地址以及主机名,创建work节点。

14、初始化(k8s-master)

这是一个用于初始化Kubernetes集群的命令。它的意思是:

- 使用API服务器的自宣传地址192.168.56.11来初始化Kubernetes集群。

- 使用镜像仓库registry.aliyuncs.com/google_containers来拉取Kubernetes相关的容器镜像。

- 使用Kubernetes版本v1.25.0来初始化Kubernetes集群。

- 使用服务CIDR为10.96.0.0/12来分配服务集群IP地址。

- 使用Pod网络CIDR为10.244.0.0/16来分配Pod网络IP地址。

  1. # 初始化k8s ,使用中国镜像源拉取镜像apiserver-advertise-address为自己的主机地址
  2. sudo kubeadm init --apiserver-advertise-address=192.168.121.134 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.25.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
  3. #如果出现以下字符,说明初始化成功。
  4. Then you can join any number of worker nodes by running the following on each as root:
  5. kubeadm join 192.168.56.11:6443 --token s0d1qo.dbcwcms72y4y3j7x \
  6. --discovery-token-ca-cert-hash sha256:5ad74702eebb9f3c254c3e48a68792e93e07f97c104cdd9b7f1fcf

初始化时报错

[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist

执行以下命令然后重新初始化

  1. modprobe br_netfilter
  2. sysctl -p

若没出现

则手动编辑添加

  1. vi /etc/sysctl.conf
  2. net.bridge.bridge-nf-call-ip6tables = 1
  3. net.bridge.bridge-nf-call-iptables = 1

安装失败则执行以下命令再重新安装

  1. kubeadm reset # 清除之前安装的组件和配置文件
  2. rm -rf /etc/kubernetes/ # 删除Kubernetes配置文件
  3. rm -rf .kube/ # 不删除则运行kubectl get nodes时报错

初始化init时出现Initial timeout of 40s passed,执行下列命令查看日志

journalctl -xeu kubelet

安装成功显示

三、Worker安装

node节点执行以下命令

  1. kubeadm join 192.168.121.134:6443 --token yvfkxm.zjkefeo3pvvl4sqj \
  2. --discovery-token-ca-cert-hash sha256:cef18677004142124720a763cb6e8c17dceb9d5f77a9f0dee8305e3170ceddd3

四、集群查看

1.在master家目录写入K8S的config

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

2.查询节点状态

kubectl get nodes

启动成功

至此 一个简单的k8s集群搭建完成

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/304799
推荐阅读
相关标签
  

闽ICP备14008679号