基于Kubeadm的Kubernetes集群搭建(CentOS7)
环境
系统:Centos7 kubernetes:v1.23.6 docker:20.10.14
服务器准备
- 192.168.1.162 mater
- 192.168.1.161 node
更改服务器名称(便于查看)
192.168.1.162 k8s-master-1
vi /etc/hostname 将值更改为 k8s-master-1
192.168.1.161 k8s-node-1
vi /etc/hostname 将值更改为 k8s-master-1
服务器环境配置
1.禁用selinux
[root@k8s-master-1 ~]# setenforce 0 #临时关闭
[root@k8s-master-1 ~]# vi /etc/selinux/config #永久,将config 中SELINUX设置为disabled
2.禁用firewalld
查看防火墙状态: systemctl status firewalld.service
关闭防火墙命令: systemctl stop firewalld.service
禁用防火墙命令: systemctl disable firewalld.service
3.关闭swap交换区
[root@k8s-master-1 ~]# swapoff -a #临时关闭
[root@k8s-master-1 ~]# vi /etc/fstab #永久,编辑/etc/fstab,注释关于swap那行
4.修改iptable规则,打开内置的桥功能
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
注:若出现不存在错误: -bash: /proc/sys/net/bridge/bridge-nf-call-iptables: 没有那个文件或目录
执行 modprobe br_netfilter 后在执行该语句
5.在master配置hosts解析各主机
[root@k8s-master-1 ~]# vi /etc/hosts
6.docker环境搭建与配置
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
配置 (kubernetes官方推荐docker等使用systemd作为cgroupdriver)
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"data-root": "/data/docker"
}
EOF 重启docker
systemctl daemon-reload
systemctl restart docker 检查 docker info|grep "Cgroup Driver" 是否输出 Cgroup Driver: systemd
master安装k8s组件,初始化master
1.执行下面命令安装k8s组件
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 install -y --nogpgcheck kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y –nogpgcheck kubelet kubeadm kubectl 安装
2.初始化master
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.23.6 --pod-network-cidr=10.244.0.0/16
ps: 安装出错可以通过 journalctl -xefu kubelet 查看错误细节。
初始化错误,解决问题之后,可以通过kubeadm reset 重置,再安装。
初始化命令成功结束后会出现下图内容:
master安装网络插件
本文使用flannel (可能会因为网络问题,镜像下载会比较慢,请耐心),使用kubectl -n kube-system get pod查看状态
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
ps: 外网不可访问处理方法
# 在https://www.ipaddress.com/查询raw.githubusercontent.com的真实IP。
sudo vim /etc/hosts
199.232.28.133 raw.githubusercontent.com
配置node,加入集群
1.node环境配置
同master一样需要配置环境并安装docker。(环境配置)
2.执行下面命令安装k8s组件
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 install -y --nogpgcheck kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y –nogpgcheck kubelet kubeadm kubectl 安装
3.执行记录下来的join命令
kubeadm join 192.168.1.162:6443 --token ****** \
--discovery-token-ca-cert-hash sha256:eb138b1edc2436d8de9ee844392059caecdadbc6e9c2bf6729f8ee2e6151c953
ps: 加入错误,解决问题之后,可以通过kubeadm reset 重置,再加入
4.在master执行命令查看集群状态
[root@k8s-master-1 ~]# kubectl get node
参考文章
002.使用kubeadm安装kubernetes 1.17.0
Kubernetes 镜像
安装 kubeadm
Kubernetes 加入主节点报错
【kubeadm初始化报错】failed to run Kubelet: misconfiguration: kubelet cgroup driver: “cgroupfs” is different from docker cgroup driver: “systemd”
如何解决 kubernetes 重启后,启来不来的问题
CentOS Docker 安装
解决k8s执行kubeadm join遇到could not find a JWS signature的问题