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

一、集群环境配置要求

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.关闭防火墙

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

2.关闭 selinux

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

3.关闭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
EOF

yum 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/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo 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 集群搭建完成。

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值