centos Stream8 安装最新版本k8s
安装1.25.3最新版本k8s,基于docker容器
原因
- k8s在1.24版本之后删除了使用docker容器的兼容包,需要手动安装使用容器的接口
- k8s最新版本更新了很多的其他语法
基于环境(2022.10.25时最新版本)
- 服务器版本:CENTOS STREAM8(语法兼容centos7, stream 9,同样可以运行)
- docker版本: 20.10.21
- cri-docker版本: v0.2.6
- k8s版本: 1.25.3
系统环境准备
关闭防火墙
1
2
3
4// 停止
systemctl stop firewalld
// 禁用开机自启
systemctl disable firewalld关闭SELinux
1
2
3
4// 临时
setenforce 0
// 永久
sed -i 's/enforcing/disabled/' /etc/selinux/config关闭swap
1
2
3
4// 临时
swapoff -a
// 永久, 注释掉swap那一行
vim /etc/fstab配置文件
1
2
3
4
5
6
7cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter设置所需的 sysctl 参数,参数在重新启动后保持不变
1
2
3
4
5
6
7
8cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
// 立即生效
sysctl --system设置每台电脑名称
1
2
3
4
5
6// master执行
hostnamectl set-hostname master
// node节点执行,如果多个子节点则每个节点按顺序递增
hostnamectl set-hostname node1
hostnamectl set-hostname node2
...设置hosts解析
1
2
3
4
5
6
7vim /etc/hosts
# 内容按照上方执行的实际数量增加
172.19.213.38 master
172.19.213.39 node1
172.19.213.40 node2
...
安装docker
- 安装docker
安装docker参考链接 - daemon.json
daemon.json参考文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20方式一: 下载文件移动至/etc/docker/daemon.json
方式二: 将下方内容复制到/etc/docker/daemon.json内,文件不存在则进行创建
------------------------------------
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}
-------------------------------------
"exec-opts": ["native.cgroupdriver=systemd"] 修改docker配置,是为了docker与cri统一
// 重新加载配置
systemctl daemon-reload
// 重新启动docker
systemctl restart docker安装cri-docker
- 下载cri-docker安装包
1
2
3// 2022.11.02最新版本为0.26.3
方式一: wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.6/cri-dockerd-0.2.6-3.el7.x86_64.rpm
方式二: 在本机下载,使用ftp上传到服务器(可以使用科学上网,速度会快一些),下载地址: https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.6/cri-dockerd-0.2.6-3.el7.x86_64.rpm - 安装 cri-docker
1
2// 后面的文件名以当时下载最新为准
rpm -ivh cri-dockerd-0.2.6-3.el7.x86_64.rpm - 修改配置
1
2
3
4
5
6
7
8
9
10vim /usr/lib/systemd/system/cri-docker.service
注释原
# ExecStart=xxxxxxxxxx
新增
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8 --container-runtime-endpoint fd://
//启动服务,设置开机自启
systemctl start cri-docker && systemctl enable cri-docker
安装kubernetes
设置仓库
1
2
3
4
5
6
7
8
9cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF安装kubernetes
1
2
3
4
5
6
7//默认安装仓库内最新版本,也可以指定版本
// 建议使用第一个命令安装
yum install -y kubelet kubeadm kubectl
yum install -y kubelet-1.25.3-0 kubeadm-1.25.3-0 kubectl-1.25.3-0
// 启用 kubelet
systemctl enable kubelet创建主节点(仅在master节点执行)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23//自己根据需要参考说明进行修改,不建议原样执行
// 如果init命令执行错误,需要每次支持命令进行重置
kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock
// init命令
kubeadm init \
--apiserver-advertise-address=172.19.213.38 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.3 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all \
--cri-socket unix:///var/run/cri-dockerd.sock
// 说明
apiserver-advertise-address 一般是当前电脑ip,如果集群是内网,可以使用内网IP,其他建议是公网IP
image-repository 设置 镜像地址
kubernetes-version kubelet当前版本,如果不知道,可以使用 kubelet --version 进行获取
service-cidr 默认不修改
pod-network-cidr 默认不修改
ignore-preflight-errors 默认忽略所有错误,一般是有一个CPU的错误
cri-socket 指定使用容器类型执行成功之后会得到 kubeadm join 开头的加入命令,请保存,是后续node节点加入集群的命令
开始使用集群(master节点执行)
1
2
3
4
5
6
7
8
9// 方式一
# 对于root用户, 直接添加变量即可开始使用集群(如果有多个master节点,每个都需要执行)
# 临时
export KUBECONFIG=/etc/kubernetes/admin.conf
# 永久
# 加入变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile1
2
3
4
5//方式二
# 意思是,初始化成功,要开始使用K8S集群的话,需要执行以下命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config安装 Pod 网络插件(CNI) (master节点执行)
1
2wget https://docs.projectcalico.org/manifests/calico.yaml
kubectl apply -f calico.yamlnode节点加入master集群
该命令会在 master init命令执行成功后获得1
2
3
4
5
6// 该命令会在 master init命令执行成功后获得
// 最后要加上 --cri-socket=unix:///var/run/cri-dockerd.sock (指定使用容器类型)
kubeadm join 172.19.213.38:6443 --token v2zeh2.kmutrq7yo82fm6sv \
--discovery-token-ca-cert-hash sha256:8e2819da8d969467717c37ac222ba9bb56656c549c3ac5b340e2d9c68cb13549 \
--cri-socket=unix:///var/run/cri-dockerd.sock
每个node节点都需要执行该命令,等待执行成功
查看节点状态
在master节点执行命令,查看集群下的所有节点,会输出节点列表和状态
1 | kubectl get nodes |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 翰林院!
评论