Kubernetes(k8s 1.23.17) 基于docker 一主两从集群环境搭建

结合网上资料,利用k8s最后直接支持docker的版本1.23.17搭建,并本地验证完成。

1 虚拟机准备

1.1 规划

系统角色/hostnameIP地址配置
CentOS 7.9 (需要7.5+)master192.168.68.1002Core、4G内存、40GB磁盘
CentOS 7.9 (需要7.5+)node1192.168.68.1012Core、4G内存、40GB磁盘
CentOS 7.9 (需要7.5+)node2192.168.68.1022Core、4G内存、40GB磁盘

1.2 虚拟机安装

使用VMWare Workstation 17

1.1.1 新建虚拟机

选择自定义,稍后安装系统
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.1.2 配置虚拟机

开启虚拟机,选择直接安装,软件选择时,选择 基础设施服务器,安装位置 默认即可

在这里插入图片描述
在这里插入图片描述

接下来是网络设置,设置固定IP,DNS使用阿里云的公共 DNS:223.5.5.5,保存后,同时更改左下角主机名为对应名称即可,对应:master、node1、node2

在这里插入图片描述
在这里插入图片描述

配置完成,即可开始安装,并设置系统密码

2 环境初始化

所有服务器节点都需要执行,使用 xshell 时,可以:工具 --> 发送键输入到所有会话,这样就是同时操作多个服务器

2.1 查看版本

确保版本 >= 7.5,本次使用的是7.9

cat /etc/redhat-release

2.2 配置主机名解析

方便集群间直接调用

cat>>/etc/hosts<<EOF
192.168.68.100 master
192.168.68.101 node1
192.168.68.102 node2
EOF

2.3 时间同步

k8s要求集群内节点时间精确一致。这里使用chronyd进行时间同步,也可以使用 ntp ntpdate

systemctl start chronyd && systemctl enable chronyd

2.4 关闭防火墙

kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

systemctl stop firewalld && systemctl disable firewalld

# 以下在 centos7 上未启用,可不做处理
systemctl stop iptables && systemctl disable iptables

2.5 禁用selinux

selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题

setenforce 0 && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

2.6 禁用swap分区

swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用

启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备

但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

2.7 修改内核参数和模块

修改linux的内核参数,添加网桥过滤和地址转发功能

cat <<EOF > /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

重新加载 使内核参数配置生效

sysctl --system  &&  modprobe br_netfilter  && lsmod | grep br_netfilter

2.8 ipset和ipvsadm

在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的

两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块

yum install ipset ipvsadm -y

编辑需要添加的模块脚本

cat <<EOF> /etc/sysconfig/modules/ipvs.modules
#!bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

添加执行权限,并执行脚本

# 添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules

# 执行脚本
/bin/bash /etc/sysconfig/modules/ipvs.modules

# 查看是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

2.9 重启服务器

reboot

3 安装docker

在所有服务器节点执行

3.1 准备

# 更新yum
yum update

# 卸载旧版docker
yum remove docker  docker-common docker-selinux docker-engine

# 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 或者使用阿里云的镜像源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

3.2 安装

这里安装的是 20.10.24版本

yum -y install docker-ce-20.10.24-3.el7 docker-ce-cli-20.10.24-3.el7 containerd.io

3.3 配置镜像地址

这里配置的清华镜像

Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs

mkdir /etc/docker && cat <<EOF> /etc/docker/daemon.json
{
	"exec-opts":["native.cgroupdriver=systemd"],
	"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
EOF

3.4 开机自启动

systemctl start docker && systemctl enable docker

4 kubernetes 安装

在所有服务器节点执行

4.1 配置镜像源

由于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=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

4.2 安装指定版本

安装kubeadm、kubelet和kubectl,这里安装的是1.23.17版本

yum -y install kubelet-1.23.17 kubeadm-1.23.17 kubectl-1.23.17

4.3 配置

配置kubelet的cgroup,与 3.3 配置相同:systemd

cat>/etc/sysconfig/kubelet<<EOF
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
EOF

4.4 开机自启kubelet

启动不先启动,因为后边的安装过程中会自动启动

systemctl enable kubelet

5 集群安装

以下在所有服务器都要执行

kubernetes默认CA证书为10年,其他证书为一年,需要修改可参考:https://blog.csdn.net/bh451326803/article/details/125439466,修改完成再进行以下操作,无需修改可无视,这里我打包了一个100年的,k8s 1.23.17版本kubeadm 100年CA有效期,只需要1个积分,需要的可以下载

5.1 准备集群镜像

由于网络原因,无法连接,下面提供了一种替代方案,直接使用阿里云镜像

kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers

下面开始对集群进行初始化,并将node节点加入到集群中

以下只在 master 服务器上执行

5.2 创建集群

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

5.3 创建必要文件

上边集群创建成功后,命令行会提示以下信息

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

以下只在 node 服务器上执行

5.4 node节点加入集群

以下这个命令,是 5.1 创建集群成功后,会提示的一个命令,注意查看提示

kubeadm join 192.168.68.100:6443 --token 8587uc.o8knircuri8etnw2 \
--discovery-token-ca-cert-hash sha256:acc37967fb5b0acf39d7598f8a439cc7de88f439a3f4d0c9cae88e7901b9d3f

6 网络插件安装

以下在 master 节点执行

查看各个节点的状态kubectl get nodes,全部都是notready状态,需要安装网络插件。k8s支持多种网络插件,如flannel,calico,canal等,这里选择flannel。

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

若无法访问,可直接去GitHub下载

https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml

这里放到root目录下,之后再使用配置文件启动fannel

kubectl apply -f kube-flannel.yml 

稍等片刻,再次查看node状态,发现为ready

kubectl get nodes

至此,集群环境搭建完成

7 验证集群

接入master节点,部署一个 nginx 进行测试

#部署nginx
kubectl create deployment nginx  --image=nginx:1.18-alpine

#暴露端口
kubectl expose deployment nginx  --port=80  --type=NodePort

kubectl get pod,svc

获取到部署信息如下

在这里插入图片描述

可以发现port=32673,用浏览器访问master:port 或 node1:port 或 node2:port都可以进入nginx主页

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CentOS 8上安装Kubernetes版本1.23.9有一些步骤需要跟随。以下是一个简单的步骤指南: 1. 首先,您需要确保您的CentOS 8系统处于最新状态。运行以下命令来更新软件包: ``` sudo dnf update ``` 2. 安装Docker引擎,因为Kubernetes需要Docker进行容器化。运行以下命令安装Docker: ``` sudo dnf install docker ``` 3. 启动Docker服务并将其设置为在系统启动时自动启动: ``` sudo systemctl start docker sudo systemctl enable docker ``` 4. 添加Kubernetes存储库。在CentOS 8上,您可以使用dnf来添加存储库。运行以下命令: ``` sudo dnf install curl sudo curl -LO https://dl.k8s.io/release/1.23.9/kubernetes-server-linux-amd64.tar.gz ``` 5. 解压缩下载的Kubernetes存档文件: ``` tar -xvf kubernetes-server-linux-amd64.tar.gz ``` 6. 进入解压缩的目录并复制二进制文件到/usr/local/bin目录: ``` cd kubernetes sudo cp kubelet kubeadm kubectl /usr/local/bin/ ``` 7. 初始化Kubernetes主节点。运行以下命令初始化一个新的Kubernetes主节点: ``` sudo kubeadm init --pod-network-cidr=192.168.0.0/16 ``` 8. 安装网络插件。Kubernetes需要网络插件才能让容器之间通信。例如,您可以安装flannel插件: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 9. 完成安装后,您可以通过运行以下命令查看集群状态: ``` kubectl get nodes ``` 如果一切正常,您将看到已成功添加的主节点。 以上是在CentOS 8上安装Kubernetes版本1.23.9的简单步骤指南。请注意,这只是一个简单的指南,根据您的环境和需求,您可能需要采取其他步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值