当前位置:   article > 正文

K8S环境搭建部署及项目迁移_rhel 7.4 - 7.9 minimal

rhel 7.4 - 7.9 minimal

1.节点规划

角色CPU核数内存系统盘数量
部署机48G100G 1
Master48G100G3
Worker1664G系统盘: 100G
数据盘: 300G(/var/lib/docker)
4
存储机24G3T1

2.软件要求

需求项具体要求参考(以CentOS7.6为例)
操作系统CentOS/RHEL 7.4 - 7.9 Minimal
EulerOS 2.5(x86_64)
EulerOS 2.8(arm64)
cat /etc/redhat-release
CPU 架构支持 x86_64 和 aarch64uname -m
kernel 版本>=Linux 3.10.0-957.el7.x86_64uname -sr
swap关闭。如果不满足,系统会有一定几率出现 io 飙升,造成 docker 卡死。kubelet 会启动失败(可以设置 kubelet 启动参数 --fail-swap-on 为 false 关闭 swap 检查)swapoff -a
sed -i '/ swap / s/^.$/#\1/g' /etc/fstab
防火墙关闭。Kubernetes 官方要求systemctl stop firewalld && systemctl disable firewalld
SELinux关闭setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
时区所有服务器时区必须统一,建议设置为 Asia/Shanghaitimedatectl set-timezone Asia/Shanghai

3.部署KubeOperator

  1. # 以 root 用户 ssh 登录目标服务器, 执行如下命令
  2. curl -sSL https://github.com/KubeOperator/KubeOperator/releases/latest/download/quick_start.sh -o quick_start.sh
  3. bash quick_start.sh

4.登录控制台进行配置

  1. 地址: http://<ko服务器_ip>:80
  2. 用户名: admin
  3. 密码: kubeoperator@admin123

如果部署 Kubernetes 集群时需要 K8S 节点采用 x86_64 和 arm64 混合部署,则需要添加两个不同 CPU 架构的仓库

system

手动模式创建集群,需要提前设置好主机凭据

password

NTP Server: 时间同步服务器,默认可以为空。也可以自建或使用公共 NTP Server

system

 添加主机⚓︎

  • 推荐使用全新的机器
  • KubeOperator 部署机不能作为 Kubernetes 集群节点使用

host-add

主机列表⚓︎

主机列表可以看到已添加主机的详细信息,包括 IP、CPU、内存、操作系统等

host-list

Yum 仓库

  • 替换: 此操作将会对 K8S 节点服务器原始 yum repo 文件进行备份,之后生成并仅使用 KubeOperator 的 yum repo
  • 共存: 此操作将保持K8S节点服务器原始 yum repo 文件不变,同时生成并使用 kubeoperator 的 yum repo
  • 不操作: 此操作将保持使用 K8S 节点服务器原始 yum repo 文件,不对K8S节点服务器的 yum repo 做任何操作

deploy-1

集群设置⚓︎

  • 容器网络: CIDR不能与目标IP段重叠,否则会造成初始化失败
  • POD 数量上限/节点: 默认 256
  • Service 数量上限/集群: 默认 256
  • proxy 模式: 支持 iptables 和 ipvs
  • dns 缓存: 支持开启 NodeLocal DNSCache
  • kubernetes 审计: 支持开启日志审计功能

deploy-2

运行时设置⚓︎

  • 容器运行时: 支持 Docker 和 Containerd
  • Docker 数据路径: 默认 /var/lib/docker
  • Container 子网: 默认 172.17.0.1/16

deploy-3

容器网络设置⚓︎

  • 网卡名称: 多网卡环境需要指定使用的网卡名称,单网卡环境可不填
  • 容器网络: 支持 flannel 、 calico 和 cilium

vxlan 和 ipip 网络模式

  • 基于隧道,在任何网络环境下都可以正常工作
  • 优势是对物理网络环境没有特殊要求,只要宿主机IP层可以路由互通即可
  • 劣势是封包和解包耗费CPU性能,且额外的封装导致带宽浪费

host-gw 和 bgp 网络模式

  • 基于路由,不适用于公有云环境
  • 优势是没有封包和解包过程,完全基于两端宿主机的路由表进行转发
  • 劣势是要求宿主机在2层网络是互通,且路由表膨胀会导致性能降低

cilium Overlay

  • 支持 vxlan 和 geneve
  • 基于封装的虚拟网络,产生所有主机。目前 VXLAN 和 Geneve 已经完成,但可以启用 Linux 支持的所有封装格式
  • 此模式具有最小的基础设施和集成要求。它几乎适用于任何网络基础设施,因为唯一的要求是主机之间的IP连接,这通常已经给出

cilium Native Routing

  • 使用 Linux 主机的常规路由表。网络必须能够路由应用程序容器的IP地址,此模式适用于高级用户,需要了解底层网络基础结构。
  • 适用于(1. 原生 IPv6 网络、2. 与云网络路由器配合使用、3. 如果您已经在运行路由守护进程)

deploy-4

组件设置⚓︎

  • helm: 支持 v2 和 v3
  • ingress 类型: 支持 nginx-ingress 和 traefik-ingress
  • 安装 GPU 套件: 按需使用,默认选择禁用

deploy-5

节点信息⚓︎

根据不同的节点角色选择目标主机(手动模式)

deploy-hosts

选择已授权部署计划,设置 Worker 节点数量(自动模式)

deploy-plan

确认信息⚓︎

deploy-review

日志⚓︎

集群创建过程中为 Initializing 状态,点击可查看集群安装进度并支持查看当前任务的实时日志(支持手动暂停任务日志输出)

deploy-log

5.部署K8S默认存储(NFS)  

服务端安装

使用 yum 安装 NFS 安装包。

$ sudo yum install nfs-utils

注意

只安装 nfs-utils 即可,rpcbind 属于它的依赖,也会安装上。

服务端配置

设置 NFS 服务开机启动

$ sudo systemctl enable rpcbind $ sudo systemctl enable nfs

启动 NFS 服务

$ sudo systemctl start rpcbind $ sudo systemctl start nfs

防火墙需要打开 rpc-bind 和 nfs 的服务

$ sudo firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs} success $ sudo firewall-cmd --reload success

配置共享目录

服务启动之后,我们在服务端配置一个共享目录

  1. $ sudo mkdir /home/data/nfs
  2. $ sudo chmod 755 /home/data/nfs

根据这个目录,相应配置导出目录

$ sudo vi /etc/exports

添加如下配置

  1. /home/data/nfs/ 192.168.0.0/24(rw,sync,no_root_squash,no_all_squash)
  2. /home/data/nfs/: 共享目录位置。
  3. 192.168.0.0/24: 客户端 IP 范围,* 代表所有,即没有限制。
  4. rw: 权限设置,可读可写。
  5. sync: 同步共享目录。
  6. no_root_squash: 可以使用 root 授权。
  7. no_all_squash: 可以使用普通用户授权。

:wq 保存设置之后,重启 NFS 服务。 

$ sudo systemctl restart nfs

可以检查一下本地的共享目录

  1. $ showmount -e localhost
  2. Export list for localhost: /home/data/nfs 192.168.0.0/24

这样,服务端就配置好了,接下来配置客户端,连接服务端,使用共享目录。

6.部署NFS的动态pv

使用Kubeoperator在集群内直接添加存储提供商

存储类中选择刚刚创建的提供商,创建存储类

7.部署Kubesphere

  1. kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.0/kubesphere-installer.yaml
  2. kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.0/cluster-configuration.yaml

 8.部署velero迁移测试环境项目命名空间

1.在可以访问到需要备份的k8s集群的机器上下载并解压velero,并将velero命令添加到linux

  1. wget https://github.com/vmware-tanzu/velero/releases/download/v1.5.4/velero-v1.5.4-linux-amd64.tar.gz
  2. tar -zxvf velero-v1.5.4-linux-amd64.tar.gz
  3. cp velero-v1.5.4-linux-amd64/velero /usr/local/bin


2.创建好minio需要使用的认证,这里以velero自带的测试minio部署文件为例
 

  1. cd velero-v1.5.4-linux-amd64
  2. kubectl apply -f examples/minio/00-minio-deployment.yaml
  3. vi credentials-velero
  4. [default]
  5. aws_access_key_id = minio
  6. aws_secret_access_key = minio123

3.在需要迁移的k8s集群上安装velero服务端

  1. velero install \
  2.     --provider aws \
  3.     --plugins velero/velero-plugin-for-aws:v1.0.0 \
  4.     --bucket velero \
  5.     --secret-file ./credentials-velero \
  6.     --use-restic \
  7.     --use-volume-snapshots=false \
  8.     --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000 


4.在需要备份的k8s集群上创建任意带持久化存储卷的服务进行备份测试(可自行使用helm创建)这里以备份backup-test命名空间下所有资源为例

velero backup create test-volum --include-namespaces=backup-test --default-volumes-to-restic


5.查看备份状态

velero backup get|grep test-volum

6.在需要迁移的集群上备份恢复

velero restore create --from-backup test-volum

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/492650
推荐阅读
相关标签
  

闽ICP备14008679号