最新版Kubernetes部署教程v1.31.0

最新版Kubernetes高可用部署教程v1.31.0

系统:Almalinux9
架构:
192.168.100.99 control-plane-endpoint.k8s.local control-plane-endpoint
192.168.100.10 masterA.k8s.local masterA
192.168.100.20 masterB.k8s.local masterB
192.168.100.30 masterC.k8s.local masterC
192.168.100.11 workA.k8s.local workA
192.168.100.22 workB.k8s.local workB
192.168.100.33 workC.k8s.local workC
集群拓扑图:
集群拓扑图

环境配置(全部节点都需要同步,节点多可以采用Ansible)

IP地址、主机名配置以及dns映射

我这边采用nmtui图形化进行配置,大家根据习惯命令配置即可

[root@masterA ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.99 control-plane-endpoint.k8s.local control-plane-endpoint
192.168.100.10 masterA.k8s.local masterA
192.168.100.20 masterB.k8s.local masterB
192.168.100.30 masterC.k8s.local masterC
192.168.100.11 workA.k8s.local workA
192.168.100.22 workB.k8s.local workB
192.168.100.33 workC.k8s.local workC

关闭selinux、防火墙、swap分区

# 关闭selinux
vi /etc/selinux/config
...
SELINUX=disabled
...
[root@masterA ~]# setenforce 0

# 关闭防火墙
systemctl disable --now firewalld

# 关闭swpa分区
[root@masterA ~]# swapoff -a
[root@masterA ~]# vi /etc/fstab
...
#
/dev/mapper/almalinux_192-root /                       xfs     defaults        0 0
UUID=82c99b52-c337-40ba-8518-e46c1246eaea /boot                   xfs     defaults        0 0
# /dev/mapper/almalinux_192-swap none                    swap    defaults        0 0 # 注释本行

清空iptables以及配置时间同步

# 清空以及关闭iptables
[root@masterA ~]# iptables -F
[root@masterA ~]# iptables -X
[root@masterA ~]# iptables -Z 
[root@masterA ~]# /usr/sbin/iptables-save
[root@masterA ~]# systemctl stop iptables
[root@masterA ~]# systemctl disable iptables

# 配置时间同步
[root@masterA ~]# vi /etc/chrony.conf
...
# pool 2.almalinux.pool.ntp.org iburst
server ntp1.aliyun.com iburst  //增加的阿里云NTP服务
server ntp2.aliyun.com iburst   //增加的阿里云NTP服务
...
[root@masterA ~]# systemctl restart chronyd
[root@masterA ~]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 120.25.115.20                 2   7    21     4  +1882us[+1882us] +/-   12ms
^* 203.107.6.88                  2   6    35    10   -422us[ -452us] +/-   28ms

ip地址查询

配置Yum源(阿里云)

# 替换原仓库地址为阿里云
[root@masterA ~]# sed -e 's|^mirrorlist=|#mirrorlist=|g' \
      			-e 's|^# baseurl=https://repo.almalinux.org|baseurl=https://mirrors.aliyun.com|g' \
      			-i.bak \
      			/etc/yum.repos.d/almalinux*.repo

# 生成缓存
[root@masterA ~]# dnf makecache

# 更新系统
[root@masterA ~]# dnf update -y

安装常用软件

# 常用软件
[root@masterA ~]# dnf install epel-release net-tools htop bash-completion wget vim -y

# 修改history条数和kubectl命令自动补全
[root@masterA ~]# cat .bashrc
...
HISTSIZE=5000
HISTFILESIZE=5000
source <(kubectl completion bash)

配置加载内核以及ip转发

[root@masterA ~]# cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

[root@masterA ~]# modprobe overlay
[root@masterA ~]# modprobe br_netfilter

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
[root@masterA ~]# cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用 sysctl 参数而不重新启动
[root@masterA ~]# sysctl --system

# 通过运行以下指令确认 br_netfilter 和 overlay 模块被加载
[root@masterA ~]# lsmod | grep br_netfilter
[root@masterA ~]# lsmod | grep overlay

# 通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1
[root@masterA ~]# sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

创建第一个master节点

安装containerd

# 安装必要的一些系统工具
[root@masterA ~]# dnf install -y yum-utils device-mapper-persistent-data lvm2
# 添加软件源信息
[root@masterA ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 修改仓库地址为阿里云
[root@masterA ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 创建缓存
[root@masterA ~]# dnf makecache
# 安装containerd
[root@masterA ~]# dnf install containerd -y
# 启动containerd
[root@masterA ~]# systemctl enable --now containerd.service
# 生成containerd默认配置文件
[root@masterA ~]#  containerd config default > /etc/containerd/config.toml
# 修改配置文件
[root@masterA ~]# vim /etc/containerd/config.toml
  [plugins."io.containerd.grpc.v1.cri"]
	...
    sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8" # 修改containerd镜像拉取地址为阿里云
	...
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
			...
            SystemdCgroup = true # 启动Cgroup
# 重启containerd
[root@masterA ~]# systemctl daemon-reload
[root@masterA ~]# systemctl restart containerd.service

安装kubelet、kubeadm、kubectl

# 添加kubernetes仓库源
[root@masterA ~]# cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
# 安装三个工具
[root@masterA ~]# yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# 启动kubelet
[root@masterA ~]# systemctl enable --now kubelet

配置负载均衡

建议单独做在另外一台机子上这边演示为在masterA上,使用的是nginx当然还有其他常用的负载均衡服务如下:
1、HAProxy
简介:HAProxy 是一个开源的、高性能的 TCP/HTTP 负载均衡器,广泛用于分发流量到多个服务器。
特点:简单易用、支持多种负载均衡算法、性能优秀、支持SSL/TLS终止。
使用场景:适合在生产环境中用于Kubernetes多Master节点的负载均衡。
2、Keepalived
简介:Keepalived 主要用于提供高可用性,通过虚拟路由冗余协议(VRRP)来实现主备服务器的切换,可以与HAProxy结合使用。
特点:提供高可用性,结合HAProxy能提供健壮的负载均衡与高可用解决方案。
使用场景:适合需要高可用性和主备切换的场景,通常与HAProxy配合使用。
3、Nginx
简介:Nginx 是一个高性能的HTTP和反向代理服务器,也能作为负载均衡器。
特点:灵活、支持HTTP、TCP、UDP的负载均衡,配置简单,支持SSL/TLS终止。
使用场景:适合需要同时处理HTTP和TCP流量的场景。

# 给网卡新增一个ip用于使用负载均衡服务
[root@masterA ~]# nmcli connection modify ens160 +ipv4.addresses 192.168.100.99/24
# 安装nginx
[root@masterA ~]# dnf install nginx -y
# 配置nginx
[root@masterA ~]# vim /etc/nginx/nginx.conf
user nginx;
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    upstream kubernetes-api {
    # 三个master的地址,访问192.168.100.99负载均衡会自动访问到三个master节点,及时down掉其中一个master也不影响整个集群,会把流量分发到其他正常的master
        server 192.168.100.10:6443;
        server 192.168.100.20:6443;
        server 192.168.100.30:6443;
    }

    server {
    # 因为我这边是在master节点上做负载均衡所以需要把端口改掉原来是6443,因为k8s集群需要使用6443端口不改会被占用集群会安装失败,如果大家的负载均衡服务器不在k8s集群中那可以不用修改
        listen 6444;

        location / {
            proxy_pass https://kubernetes-api;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_ssl_verify off;  # 关闭 SSL 验证
        }
    }

    # 如果需要,还可以添加健康检查配置
    server {
        listen 8080;

        location /healthz {
            access_log off;
            return 200 'OK';
        }
    }
}
# 启动nginx
[root@masterA ~]# systemctl daemon-reload
[root@masterA ~]# systemctl enable --now nginx.service

初始化集群

# 初始化集群
[root@masterA ~]# kubeadm init --apiserver-advertise-address=192.168.100.10 --control-plane-endpoint=control-plane-endpoint.k8s.local --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=172.16.0.0/16 --service-cidr=10.92.0.0/16 --service-dns-domain=k8s.local --upload-certs --v=5

常用参数如下:
1、api地址
–apiserver-advertise-address=IP地址
API 服务器将公布其正在监听的 IP 地址.如果未设置,则将使用默认网络接口.
2、负载均衡器
–control-plane-endpoint=control-plane-endpoint.k8s.local
为控制平面指定一个稳定的 IP 地址或 DNS 名称.
3、镜像拉取地址
–image-repository=registry.aliyuncs.com/google_containers
选择容器注册表来从中提取控制平面映像.(默认“registry.k8s.io”)
4、work节点的IP范围
–pod-network-cidr=172.16.0.0/16
指定 Pod 网络的 IP 地址范围。如果设置,控制平面将自动为每个节点分配 CIDR。
5、service的IP范围
–service-cidr=10.92.0.0/16
对服务 VIP 使用备用 IP 地址范围.(默认“10.96.0.0/12”)
6、service的域名
–service-dns-domain=k8s.local
使用备用域名来提供服务,例如“myorg.internal”.(默认“cluster.local”)
7、上传证书
–upload-certs
将控制平面证书上传到 kubeadm-certs Secret.

验证集群

[root@masterA ~]# mkdir -p $HOME/.kube
[root@masterA ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@masterA ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@masterA ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
# 查看节点状态
[root@masterA ~]# kubectl  get nodes
NAME                STATUS     ROLES           AGE     VERSION
mastera.k8s.local   NotReady   control-plane   3h55m   v1.31.0
# 目前状态都是NotReady那是因为网络插件还没安装后续安装完后就会正常
# 其次目前因为就只有一个节点所以就只有一个后续节点加入进来就会在这边展示

添加第二、三master节点

步骤和创建第一个一致这个就不过多赘述,只需要做到安装kubelet、kubeadm、kubectl即可,如果是克隆的机子大家需要操作“kubeadm reset”重置集群后再操作加入集群哦~

# 加入集群,masterC也是如此
[root@masterB ~]# kubeadm join control-plane-endpoint.k8s.local:6443 --token bf37jf.cwkft399w4ggd2zh \
        --discovery-token-ca-cert-hash sha256:b8dc217fb0fff89493145846674fdb87841e496fd3b53329619924f632a17787 \
        --control-plane --certificate-key 504bef590e2ba73544644236bac3bb82dbe61175f5be3708b6daad8ea53efa70

添加work节点

work节点也跟master节点几乎一致在安装kubelet、kubeadm、kubectl的时候只用安装kubelet、kubeadm即可当然全部安装也不影响,一直做到安装kubelet、kubeadm、kubectl即可然后执行加入集群操作即可,如果是克隆的机子大家需要操作“kubeadm reset”重置集群后再操作加入集群哦~

# work节点加入集群,其他两个也是如此
[root@mworkA ~]# kubeadm join control-plane-endpoint.k8s.local:6443 --token bf37jf.cwkft399w4ggd2zh \
        --discovery-token-ca-cert-hash sha256:b8dc217fb0fff89493145846674fdb87841e496fd3b53329619924f632a17787

验证整个集群状态

# 查看node状态
[root@masterA ~]# kubectl  get nodes
NAME                STATUS     ROLES           AGE     VERSION
mastera.k8s.local   NotReady   control-plane   4h23m   v1.31.0
masterb.k8s.local   NotReady   control-plane   3h58m   v1.31.0
masterc.k8s.local   NotReady   control-plane   3h49m   v1.31.0
worka.k8s.local     NotReady   <none>          177m    v1.31.0
workb.k8s.local     NotReady   <none>          177m    v1.31.0
workc.k8s.local     NotReady   <none>          177m    v1.31.0
# 查看pod启动状态
[root@masterA ~]# kubectl get pods -A
NAMESPACE     NAME                                        READY   STATUS    RESTARTS       AGE
kube-system   coredns-6ddff5bd6d-57jz7                    0/1     Pending   0              4h23m
kube-system   coredns-6ddff5bd6d-pvzvx                    0/1     Pending   0              4h23m
kube-system   etcd-mastera.k8s.local                      1/1     Running   21 (37m ago)   4h23m
kube-system   etcd-masterb.k8s.local                      1/1     Running   5 (32m ago)    3h58m
kube-system   etcd-masterc.k8s.local                      1/1     Running   2 (179m ago)   3h49m
kube-system   kube-apiserver-mastera.k8s.local            1/1     Running   33 (35m ago)   4h23m
kube-system   kube-apiserver-masterb.k8s.local            1/1     Running   5 (32m ago)    3h58m
kube-system   kube-apiserver-masterc.k8s.local            1/1     Running   2 (179m ago)   3h49m
kube-system   kube-controller-manager-mastera.k8s.local   1/1     Running   5 (130m ago)   4h23m
kube-system   kube-controller-manager-masterb.k8s.local   1/1     Running   5 (32m ago)    3h58m
kube-system   kube-controller-manager-masterc.k8s.local   1/1     Running   2 (179m ago)   3h49m
kube-system   kube-proxy-4t8fp                            1/1     Running   0              177m
kube-system   kube-proxy-87tc4                            1/1     Running   2 (179m ago)   3h49m
kube-system   kube-proxy-mmcmn                            1/1     Running   0              177m
kube-system   kube-proxy-s92rn                            1/1     Running   5 (32m ago)    3h58m
kube-system   kube-proxy-vks8k                            1/1     Running   0              177m
kube-system   kube-proxy-xlqzh                            1/1     Running   5 (130m ago)   4h23m
kube-system   kube-scheduler-mastera.k8s.local            1/1     Running   5 (130m ago)   4h23m
kube-system   kube-scheduler-masterb.k8s.local            1/1     Running   5 (32m ago)    3h58m
kube-system   kube-scheduler-masterc.k8s.local            1/1     Running   2 (179m ago)   3h49m

未完待续…

  • 18
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mediawiki-1.31.0.tar.gz是MediaWiki的一个版本,在下载之前,需要确保你已经有一个Web服务器环境,例如Apache,并且已经配置好了PHP和MySQL。以下是一个步骤指南: 1. 打开MediaWiki官方网站(https://www.mediawiki.org/),找到"Download MediaWiki"页面。 2. 在页面上,你将看到一个列表,列出了不同版本的MediaWiki。找到Mediawiki-1.31.0.tar.gz版本,并点击相关链接,开始下载。 3. 下载完成后,将压缩文件解压到你的Web服务器的网站根目录下,通常是/var/www/html/。 4. 确保你的Web服务器已经启动,并且PHP和MySQL已经正确安装和配置。 5. 打开你的Web浏览器,输入你的网站地址,例如http://localhost/,MediaWiki的安装页面将会显示。 6. 根据提示,设置你的数据库信息,包括数据库服务器的名称、用户名、密码以及数据库的名称。如果你还没有创建数据库,可以通过MySQL命令行或者phpMyAdmin创建一个新的数据库。 7. 输入一个适当的维基名称,这将作为你的维基站点的名称。 8. 继续根据提示填写一些额外的设置信息,如管理员用户名和密码等。 9. 点击"安装"按钮,MediaWiki将会完成安装过程。 10. 安装完成后,你将能够访问你的维基站点,并开始使用MediaWiki发布内容和管理你的维基站点了。 注意:在安装过程中,确保按照MediaWiki的要求设置了正确的文件权限和目录权限,这对于维基站点的正常运行是必要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值