1. 设置系统主机名及hosts文件
- 编辑
/etc/hosts
文件,添加IP与主机名的映射。若有多个Node,则全部添加。
- 执行如下命令设置主机名。
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. 禁用iptables和firewalld服务
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
- 移除旧版docker。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装docker及其依赖库。
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动Docker,设置开机自启动。
# 启动docker
systemctl start docker
# 设置docker开机启动
systemctl enable docker
# 验证
systemctl status docker
4.2. 安装cri-dockerd
K8S 1.24版本后需要使用cri-dockerd和docker通信。
- 下载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
- 设置镜像加速。
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"]
}
- 修改配置文件
/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
- 自启动、重启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》