您的位置:首页 > 娱乐 > 八卦 > Linux搭建Kubernetes集群(单Master)【附图文】

Linux搭建Kubernetes集群(单Master)【附图文】

2024/10/6 12:34:17 来源:https://blog.csdn.net/the_coco/article/details/140656977  浏览:    关键词:Linux搭建Kubernetes集群(单Master)【附图文】

文章目录

    • 一、集群环境配置要求
    • 二、主机准备
    • 三、初始环境准备
      • 1.修改主机名和host文件
      • 2.关闭防火墙
      • 3.关闭 selinux
      • 4.关闭swap
      • 4.加载 br_netfilter 模块
      • 5.允许iptables转发流量
      • 6.设置时间同步
    • 四、安装Docker
    • 五、安装kubeadm, kubectl, kubelet
    • 六、在Master节点部署集群
    • 七、将 node 节点加入集群
    • 八、部署 CNI 网络插件

一、集群环境配置要求

master 节点:

  • CPU 两核及以上
  • 内存 4G 及以上
  • 硬盘 20G 及以上

node 节点(配置要求会更高):

  • CPU 四核及以上
  • 内存 8G 及以上
  • 硬盘 40G 及以上

二、主机准备

准备三台虚拟机,分别安装Red Hat系统,一台作为 master 节点,另两台作为 node 节点,且每台虚拟机有自己的专属 IP 地址。

hostnameIP
Master节点master192.168.80.40
Node节点node01192.168.80.39
Node节点node02192.168.80.55

Red Hat7.9镜像下载地址
链接:https://pan.baidu.com/s/1AO_iDLgFCGymHHy9CKrqiA?pwd=c2ne
提取码:c2ne

虚拟机创建和配置注意事项:

  • 硬件最少达到以上最低标准配置;
  • 三台虚拟机的网络连接选择一样的模式;
    在这里插入图片描述
  • 创建时禁止swap分区(安装时如果没有禁止swap分区,后续通过命令禁止);
  • 创建完成确保虚拟机可以访问外网,以便下载镜像;
  • 安装weget工具(yum intsall weget);

三、初始环境准备

以下在三个节点都执行(只截取其中一个节点作为示例)

1.修改主机名和host文件

#修改三台主机名
hostnamectl set-hostname master
hostnamectl set-hostname node01
hostnamectl set-hostname node02#配置三台主机hosts文件
vim /etc/hosts
#在文件中加入
192.168.80.40 master
192.168.80.39 node01
192.168.80.55 node02

2.关闭防火墙

#临时关闭
systemctl stop firewalld
#永久关闭
systemctl disable firewalld

3.关闭 selinux

#临时关闭
setenforce 0
#永久关闭
sed -i '/selinux/s/enforcing/disabled/' /etc/selinux/config

4.关闭swap

#临时关闭
swapoff -a#永久关闭
vi /etc/fstab  # 将swap一行注释

在这里插入图片描述

#关闭当前的 swap
swapoff -a 
#验证 swap 是否已关闭
cat /proc/swaps
#如果输出为空,则表示 swap 已关闭

在这里插入图片描述

4.加载 br_netfilter 模块

#load mod
modprobe br_netfilter
echo "modprobe br_netfilter" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

5.允许iptables转发流量

#允许iptables转发流量
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF#使其生效
sysctl --system#检查iptables设置为接受
iptables-save |grep DROP

6.设置时间同步

yum install ntpdate -y
ntpdate time.windows.com

在这里插入图片描述

这里如果报错:

在这里插入图片描述
需要配置DNS服务器:

vi /etc/resolv.conf#Generated by NetworkManager  
nameserver 114.114.114.114  
nameserver 8.8.8.8   
nameserver 8.8.4.4

四、安装Docker

三个节点都需要安装(只截取其中一个节点作为示例)

cd /etc/yum.repos.d/
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#替换文件中每一行里所有的 $releasever 为 7
vi CentOS-Base.repo
#按 Esc 键回到命令模式,输入以下命令进行替换
:%s/$releasever/7/g
($releasever在CentOS中可以自动解析为对应版本,但是redhat不支持自动解析,需要手动替换 备份原yum文件)#安装docker
yum install -y docker-ce-19.03.15-3.el7
#安装完成查看docker版本
docker -v# config docker server 
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"insecure-registries": ["0.0.0.0/0"
],
"registry-mirrors": ["https://otvjuhk6.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {"max-size": "100m"
},
"live-restore": true,
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"
]
}
EOF# start docker
systemctl enable docker && systemctl start docker

在这里插入图片描述

五、安装kubeadm, kubectl, kubelet

三个节点都安装(只截取其中一个节点作为示例)

cat > /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=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
EOFyum install -y kubelet-1.18.17 kubeadm-1.18.17 kubectl-1.18.17 
systemctl enable kubelet && systemctl start kubelet

在这里插入图片描述

六、在Master节点部署集群

在 master 节点中执行以下命令,将apiserver-advertise-address 和kubernetes-version修改为自己的Master节点IP和kube 版本号。

kubeadm init \
--apiserver-advertise-address=192.168.80.40 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.17 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

执行完成后会生成两条命令:
在这里插入图片描述
使用命令docker images查看系统中的镜像,可以看到我们需要的镜像均已安装完成。
在这里插入图片描述

七、将 node 节点加入集群

执行上一步输出的两条命令:
在这里插入图片描述1.开启 kubectl 工具的使用(该命令在master节点中执行)

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

在这里插入图片描述

2.将 node 节点加入 master 中的集群(该命令在两个工作节点node中执行)

kubeadm join 192.168.80.40:6443 --token hmyqja.2xhx66gzlcbqrbkx \--discovery-token-ca-cert-hash sha256:f176209fbc7b2310a6f5251f3d7445ef3786aa5fc241c384627597da6394327a

在这里插入图片描述
在这里插入图片描述
执行完成后在master节点使用kubectl get nodes查看此时集群中的工作节点状态,可以看到node1 和 node2 工作节点已加入至 master 中的集群,但是状态都是NotReady。

在这里插入图片描述

在master节点使用kubectl get pods -n kube-system命令查看运行状态,可以看到有两个pod是处于Pending,因为没有安装网络组件。
在这里插入图片描述

八、部署 CNI 网络插件

在上述操作完成后,各个工作节点已经加入了集群,但是它们的状态都是 NoReady,这是由于无它们无法跨主机通信的原因。而 CNI 网络插件的主要功能就是实现 pod 资源能够跨宿主机进行通信。

在master节点中执行以下命令:

kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml

在这里插入图片描述

再次查看运行状态已全部running:

kubectl get pods -n kube-system

在这里插入图片描述
再次查看节点状态已全部Ready:

kubectl get nodes

在这里插入图片描述
Kubernetes 集群搭建完成。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com