Centos7环境下多节点Kubernetes集群的搭建

Centos7环境下多节点Kubernetes集群的搭建

一、Kubernetes简介

Kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。

二、集群运行环境及配置

VMware Workspace 16.0.0 + Centos 7-x86-64

主机名IP配置
master192.168.234.1284GB+4核2线程
node1192.168.234.1304GB+2核2线程
node2192.168.234.1334GB+2核1线程
node3192.168.234.1314GB+2核1线程

三、配置集群前组件设置

3.1 安装组件前环境预设置

3.1.1 关闭防火墙、selinux
systemctl disable --now firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
3.1.2 关闭swap分区
swapoff -a
sed -i.bak 's/^.*centos-swap/#&/g' /etc/fstab
3.1.3 设置node名称(以master节点为例)
hostnamectl set-hostname master

其他node相应的在节点名字位置做改变。

3.1.4 添加host解析,写入各个node的IP地址
cat >>/etc/hosts <<EOF
192.168.234.138 master
192.168.234.130 node1
192.168.234.133 node2
192.168.234.131 node3
EOF
3.1.5 打开ipv6流量转发
cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system   #立即生效

若配置成功,显示如下:

在这里插入图片描述

3.1.6 配置 yum源

所有节点采用阿里云官网的 base 和 epel 源。

mv /etc/yum.repos.d/* /tmp
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

若配置成功,显示如下:
在这里插入图片描述
在这里插入图片描述

3.1.7 设置时区与时间同步
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
yum install dnf ntpdate -y
dnf makecache
ntpdate ntp.aliyun.com

3.2 安装docker

docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
k8s借助docker实现容器的部署。

3.2.1 添加 docker 软件 yum 源
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

若配置成功,显示如下:
在这里插入图片描述

3.2.2 安装 docker-ce

直接安装最新版本。

dnf install -y  docker-ce docker-ce-cli
3.2.3 设置 docker 开机自启动
systemctl enable --now docker
3.2.4 查看docker版本验证是否配置成功
docker version

若配置成功,显示如下:

在这里插入图片描述
由图中可知docker已安装成功且版本为19.03.13。

3.2.5 更换 docker 的镜像仓库源便于后续使用
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors":["https://f1bhsuge.mirror.aliyuncs.com"]
}
EOF
3.2.6 重启 docker
systemctl restart docker

3.3 安装kubernetes组件

配置k8s集群需要安装kubelet、kubeadm、kubectl组件,其中:
kubelet: 运行在cluster所有节点上,负责启动POD和容器。
kubeadm: 用于初始化cluster。
kubectl: kubectl是kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件。

3.3.1 添加 kubernetes 软件 yum 源
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=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
3.3.2 安装kubelet、kubeadm、kubectl
dnf install -y kubelet-1.19.3 kubeadm-1.19.3 kubectl-1.19.3
3.3.3 启动kubelete服务并设置开机自启动
systemctl enable kubelet&& systemctl start kubelet

查看kubelet、kubeadm、kubectl版本信息,若配置成功,显示如下:
kubelet version
在这里插入图片描述
在这里插入图片描述

四、使用kubeadm初始化master节点(该步骤仅在master节点上进行)

4.1 kubeadm init

kubeadm init --apiserver-advertise-address=192.168.234.138 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.3 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

:命令行中–apiserver-advertise-address应为master节点IP地址,–kubernetes-version参数应与之前下载的k8s组件版本一致。
若配置成功,显示如下:
在这里插入图片描述
同时在最后(上图命令行未截全)会生成将其他node加入集群的秘钥:

kubeadm join 192.168.234.138:6443 --token u56aq7.o0rudtg7fwx0xd7y \
    --discovery-token-ca-cert-hash sha256:957afeb85b9830b37413df7bb90e6062a4be225bc383594180eb87bd6e9e6a5a

4.2 按照命令行提示继续对master节点进行初始化

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

查看此时集群中节点状态:

kubectl get node

结果如下:
在这里插入图片描述
可以看到此时master节点处于NotReady状态,集群尚未配置完毕。

4.3 配置flannel

Flannel是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(Overlay Network)工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。

4.3.1 将flannel镜像pull下来
docker pull jmgao1983/flannel:v0.11.0-amd64

若配置成功,显示如下:
在这里插入图片描述

4.3.2 下载kube-flannel.yml文件
wget --no-check-certificate https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

若配置成功,显示如下:
在这里插入图片描述

4.3.3 替换镜像名称以便于本机部署
sed -i 's#quay.io/coreos/flannel:v0.11.0-amd64#jmgao1983/flannel:v0.11.0-amd64#g' kube-flannel.yml
4.3.4 安装
kubectl apply -f kube-flannel.yml

若部署成功,此时再次查看集群中节点状态,结果如下:
在这里插入图片描述
可以看到此时master节点已经处于Ready状态,运行正常。

五、将node节点加入到集群中

在加入之前先在各个node进行第三步操作,设置各节点网络状态及安装相关组件。之后在各个node输入秘钥将node加入到集群中去。

kubeadm join 192.168.234.138:6443 --token u56aq7.o0rudtg7fwx0xd7y \
    --discovery-token-ca-cert-hash sha256:957afeb85b9830b37413df7bb90e6062a4be225bc383594180eb87bd6e9e6a5a

六、集群最终状态

若部署成功,此时再次查看集群中节点状态。

kubectl get node
kubectl get pods --all-namespace -0 wide

结果如下:
在这里插入图片描述
可以看见node列表中node1、node2、node3都已经加入到了集群中并处于Ready状态。pod列表中各个node节点中运行的pod也已经加入其中且运行状态为Running。

至此,Centos7环境下多节点Kubernetes集群搭建成功。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值