K8S, Linux

CentOS7使用kubeadm部署K8S Master

Posted by 煮石山农2023 - Oct - 27 Leave comments

1. 设置系统主机名及hosts文件

  1. 编辑/etc/hosts文件,添加IP与主机名的映射。若有多个Node,则全部添加。

  1. 执行如下命令设置主机名。
hostnamectl set-hostname k8s-master

2. 更新系统&设置存储库

yum update -y
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3. 相关设置

3.1. 禁用iptablesfirewalld服务

systemctl stop firewalld
systemctl disable firewalld

systemctl stop iptables
systemctl disable iptables

3.2. 禁用SELinux

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

3.3. 禁用swap分区

永久关闭swap分区,编辑/etc/fstab文件,将swap行的内容注释掉。

# /dev/mapper/xxx    swap   xxx

3.4. 调整内核参数

/etc/sysctl.d/k8s.conf文件中追加如下三行内容:

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1

依次执行如下命令:

sysctl -p
modprobe br_netfilter
lsmod | grep br_netfilter

至此,重启一次操作系统。

4. 安装docker和cri-dockerd(所有节点执行)

4.1. 安装docker

  1. 移除旧版docker。
yum remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-engine
  1. 安装docker及其依赖库。
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 启动Docker,设置开机自启动。
# 启动docker
systemctl start docker
# 设置docker开机启动
systemctl enable docker
# 验证
systemctl status docker

4.2. 安装cri-dockerd

K8S 1.24版本后需要使用cri-dockerd和docker通信。

  1. 下载cri-dockerd。
# 若没有wget,则执行
yum install -y wget
# 下载
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4-3.el7.x86_64.rpm
# 安装
rpm -ivh cri-dockerd-0.3.4-3.el7.x86_64.rpm
# 重载系统守护进程
systemctl daemon-reload
  1. 设置镜像加速。

Docker Hub 是 Docker 官方提供的一个公开的 Registry,里面存储了很多常用的镜像,当我们使用 Docker 运行容器时,如果本地没有这个镜像,它就会到 Docker Hub 去下载。但是,由于 Docker Hub 服务器在国外,所以在国内下载速度比较慢。而 Registry Mirror 也被称为 Docker 镜像加速器,它实际上就是一个代理服务器,能够提供更快的镜像下载速度。

为了从国内的镜像托管站点获得镜像加速支持,建议修改Docker的配置文件,增加Registry Mirror参数,将镜像配置写入配置参数中。

编辑/etc/docker/daemon.json,设置:

{
  "registry-mirrors": ["https://c12xt3od.mirror.aliyuncs.com"]
}
  1. 修改配置文件/usr/lib/systemd/system/cri-docker.service,修改第10行ExecStart=为:
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

其中pause:3.9版本是根据K8S的版本相关,当前安装v1.28.2版本的K8S时,通过如下命令得知pause的版本为3.9:

kubeadm config images list --kubernetes-version v1.28.2

  1. 自启动、重启Docker组件。
# 重载系统守护进程
systemctl daemon-reload
# 设置cri-dockerd自启动
systemctl enable cri-docker.socket cri-docker
# 启动cri-dockerd
systemctl start cri-docker.socket cri-docker
# 检查Docker组件状态
systemctl status docker cir-docker.socket cri-docker

5. 安装Kubernetes

5.1. 配置repo源

/etc/yum.repos.d/目录下创建kubernetes.repo文件,内容如下:

[kubernetes]
name=Kubernetes Repository
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

5.2. 安装kubectl&kubelet&kubeadm(所有节点执行)

名称 说明
kubectl Kubernetes 的命令行工具,人们通常通过它与Kubernetes 进行交互。
kubelet Kubernetes 工作节点上的一个代理组件,运行在每个节点上。
kubeadm 一个提供了 kubeadm init 和 kubeadm join 的工具, 作为创建Kubernetes 集群的“快捷途径” 的最佳实践(用于创建集群)。

执行如下命令安装:

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

5.3. 检查runc

执行:

runc -v

5.4. 初始化Master节点

执行:

kubeadm init  --node-name=k8s-master --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.3.61 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

其中--apiserver-advertise-address的值需要修改为实际主机的IP地址。

安装成功后:

因为是root用户安装的,因此将如下环境变量添加到~/.bash_profile中:

export KUBECONFIG=/etc/kubernetes/admin.conf

执行:

source ~/.bash_profile

至此,则K8S Master安装完成。

   声明:本文采用 BY-NC-SA 协议进行授权 | 星期九
   原创文章转载请注明:转自《CentOS7使用kubeadm部署K8S Master

No comments yet.
comment_ad
  

 NOTICE1: You should type some Chinese word in your comment to pass the spam-check, thanks for your patience!