Centos7安装K8S的1.21.2集群
Posted 逝唁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos7安装K8S的1.21.2集群相关的知识,希望对你有一定的参考价值。
Centos7安装K8S
1、服务器
需要准备三台Centos7
的服务器,配置最少2C 2G
。
三台服务器都已经配置好静态IP。
没有配的可以参考:VM Ware+Centos7配置静态IP
主机名 | IP | Docker版本 | 主机配置 | K8S版本 |
---|---|---|---|---|
master01 | 192.168.159.171 | 20.10.7 | 2C8G | 1.21.2 |
work01 | 192.168.159.172 | 20.10.7 | 2C8G | 1.21.2 |
work02 | 192.168.159.173 | 20.10.7 | 2C8G | 1.21.2 |
2、环境准备
注意:以下操作需要三台服务器都执行、都需要用root权限操作
1、配置yum阿里源
- 使用
yum
命令、安装wget
命令
yum -y install wget
- 使用
mv
命令将原yum源备份。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 使用
wget
命令下载阿里yum源。
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- 将yum源清理一下,并将阿里yum源生效。
yum clean all
yum makecache
2、关闭防火墙
- 使用以下命令查看防火墙状态,并关闭防火墙。显示
not running
为防火墙关闭状态。
# 查看防火墙状态
firewall-cmd --state
# 临时停止防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
3、关闭selinux状态
- 使用以下命令查看
selinux
状态,并关闭selinux
。
# 查看selinux状态
getenforce
# 临时关闭selinux
setenforce 0
# 永久关闭selinux
sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
4、禁止swap交换
- 使用以下命令关闭
swap
内存交换
# 临时关闭swap
swapoff -a
# 永久关闭swap
sed -i.bak '/swap/s/^/#/' /etc/fstab
5、内核参数修改
- 使用以下命令修改内核参数。
# 修改ipv4
sysctl -w net.ipv4.ip_forward=1
# 添加k8s.conf
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 生效内核参数
sysctl -p /etc/sysctl.d/k8s.conf
6、设置kubernetes源
- 新增kubernetes的阿里源
# 添加kubernetes源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
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
EOF
- 使用以下命令,刷新
yum
源。
yum clean all
yum -y makecache
7、Docker安装
-
Docker选择
20.10.7
版本安装。安装步骤参考这篇博客:Centos7安装Docker
8、设置Cgroup Driver
-
使用
vim
命令修改Docker的daemon.json文件。增加
exec-opts
配置。
"exec-opts": ["native.cgroupdriver=systemd"]
- 使用以下命令重新加载
daemon.json
配置,并重启Docker
systemctl daemon-reload
systemctl restart docker
9、验证机器的mac和UUID
- 使用以下命令,验证机器的
mac
地址和UUID
是否相同。
# 查看mac地址
cat /sys/class/net/ens33/address
# 查看UUID
cat /sys/class/dmi/id/product_uuid
10、修改主机名
- 使用以下命令,修改机器的主机名。
注意:三台机器主机名都需要修改
hostnamectl set-hostname master01
more /etc/hostname
11、修改hosts
- 使用以下命令,修改
hosts
文件。
cat >> /etc/hosts << EOF
192.168.159.171 master01
192.168.159.172 work01
192.168.159.173 work02
EOF
12、重启机器
- 重启三台机器,使上面更改的配置全部生效!
3、安装K8S
1、查看K8S版本
- 使用
yum list
命令,列出所支持的版本。
注意:横杠(-)之前的才是版本号。
yum list kubelet --showduplicates | sort -r
2、安装kubelet、kubeadm、kubectl
- 使用
yum install
命令安装指定的K8S版本。
注意:三台机器都需要执行以下操作
yum install -y kubelet-1.21.2 kubeadm-1.21.2 kubectl-1.21.2
- 启动
kubelet
服务,并设置开机自启。
systemctl enable kubelet && systemctl start kubelet
3、拉取镜像
- 使用
kubeadm
命令、查看当前k8s所需的镜像版本。
kubeadm config images list
-
可以看到上面k8s所需的镜像版本是
1.21.3
。跟安装指定的版本并不相同,这个并不影响,可以自定义修改版本。只需要关注如:pause、etcd、coredns的版本即可。
因为k8s这些镜像都是国外的,直接访问下载镜像可能会有问题。
编写拉取镜像脚本,从阿里云镜像仓库下载所需版本。
注意:脚本需要在三台机器上都编写。都需要拉取镜像
#!/bin/bash url=registry.cn-hangzhou.aliyuncs.com/google_containers # 安装指定的kubectl版本 version=v1.21.2 # 上面查出来的coredns版本号 coredns=1.8.0 images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`) for imagename in ${images[@]} ; do if [ $imagename = "coredns" ] then docker pull $url/coredns:$coredns docker tag $url/coredns:$coredns k8s.gcr.io/coredns/coredns:v1.8.0 docker rmi -f $url/coredns:$coredns else docker pull $url/$imagename docker tag $url/$imagename k8s.gcr.io/$imagename docker rmi -f $url/$imagename fi done
- 修改
images.sh
脚本权限,改为可执行权限。
chmod +x images.sh
- 执行
images.sh
脚本,拉取镜像
./images.sh
- 使用
docker images
命令,查看镜像
docker images
4、初始化K8S集群
- 在
master01
机器上执行初始化集群命令。
注意:该命令只需在master01上执行
kubeadm init --kubernetes-version=1.21.2 --apiserver-advertise-address=192.168.159.171 --pod-network-cidr=10.244.0.0/16
–kubernetes-version # 指定的版本
–apiserver-advertise-address # K8S主节点的地址
–pod-network-cidr # pod的网络IP范围
- 记录初始化集群命令后,k8s给你生成的加入集群命令。
kubeadm join 192.168.159.171:6443 --token ahuca1.yvo1nypczve06rfx \\
--discovery-token-ca-cert-hash sha256:3c0612ffc6eaca3bd7d34fe603da008d55c2d3982268bb85105ffc464c4e1a1f
- 执行k8s集群初始化给你生成的创建目录和复制配置文件命令。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 在
work01
和work02
两台机器上的根目录
执行你刚才记录的加入K8S集群命令。
kubeadm join 192.168.159.171:6443 --token ahuca1.yvo1nypczve06rfx \\
--discovery-token-ca-cert-hash sha256:3c0612ffc6eaca3bd7d34fe603da008d55c2d3982268bb85105ffc464c4e1a1f
5、在master01
机器上执行以下命令,查看k8s集群节点。
kubectl get nodes
5、安装Calico网络插件
- 使用
curl
命令下载Calico网络插件的YAML文件。
curl https://docs.projectcalico.org/manifests/calico.yaml -O
- 使用
kubectl apply
应用刚刚下载好的calico.yaml
文件。
kubectl apply -f calico.yaml
- 使用以下命令查看当前K8S集群的pods
kubectl get pods -o wide -n kube-system
以上是关于Centos7安装K8S的1.21.2集群的主要内容,如果未能解决你的问题,请参考以下文章
云原生centos7搭建安装k8s集群 v1.25版本详细教程实战