您的位置:首页 > 文旅 > 美景 > 阿玛尼手表_建设局上班时间_免费手机网页制作_网站优化 秦皇岛

阿玛尼手表_建设局上班时间_免费手机网页制作_网站优化 秦皇岛

2024/12/28 14:11:33 来源:https://blog.csdn.net/liao__ran/article/details/142356075  浏览:    关键词:阿玛尼手表_建设局上班时间_免费手机网页制作_网站优化 秦皇岛
阿玛尼手表_建设局上班时间_免费手机网页制作_网站优化 秦皇岛

项目地址

https://github.com/TimeBye/kubeadm-ha

准备安装包

# 离线安装环境
curl -LO https://oss.choerodon.com.cn/kubeadm-ha/kubeadm-ha-base-amd64.tar
# 集群运行所需的镜像
curl -LO https://oss.choerodon.com.cn/kubeadm-ha/kubernetes-1.30.2-images-amd64.tgz
# CentOS 7 系统对应软件包
curl -LO https://oss.choerodon.com.cn/kubeadm-ha/centos7/kubernetes-1.30.2-centos7-amd64.tgz
# 克隆脚本
git clone -b release-1.27 https://mirror.ghproxy.com/github.com/TimeBye/kubeadm-ha.git

节点信息

iphostnameOSrole
192.168.73.98k8s-master3CentOS 7.9master etcd worker
192.168.73.99k8s-master2CentOS 7.9master etcd worker
192.168.73.100k8s-master1CentOS 7.9master etcd worker
192.168.73.101k8s-node1CentOS 7.9worker
192.168.73.102k8s-deplayCentOS 7.9kubeadm-ha(ansible)

k8s-depaly 操作

解压离线包
tar -xzvf kubernetes-1.30.2-images-amd64.tgz
tar -xzvf kubernetes-1.30.2-centos7-amd64.tgz
配置yum源
cat <<EOF | tee /etc/yum.repos.d/kubeadm-ha.repo
[kubeadm-ha]
name=Kubeadm HA - \$basearch
baseurl=file:///data/packages/
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
CentOS 类系统安装 containerd
# Kylin V10 需要移除以下软件包
yum remove -y selinux-policy python3-setools thin-provisioning-toolsyum install -y --disablerepo=\* --enablerepo=kubeadm-ha \containerd.io
配置 containerd
# root 为 containerd 存储目录,可修改为其他非共享存储目录。
cat <<EOF | tee /etc/containerd/config.toml
version = 2
root = "/var/lib/containerd"
state = "/run/containerd"
oom_score = -999
[grpc]max_recv_message_size = 16777216max_send_message_size = 16777216
[debug]level = "info"
[metrics]address = ""grpc_histogram = false
[plugins][plugins."io.containerd.grpc.v1.cri"]sandbox_image = "registry.custom.local:12480/kubeadm-ha/pause:3.9"max_container_log_line_size = -1[plugins."io.containerd.grpc.v1.cri".containerd]default_runtime_name = "runc"snapshotter = "overlayfs"[plugins."io.containerd.grpc.v1.cri".containerd.runtimes][plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]runtime_type = "io.containerd.runc.v2"runtime_engine = ""runtime_root = ""[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]SystemdCgroup = true[plugins."io.containerd.grpc.v1.cri".registry]config_path = "/etc/containerd/certs.d"
EOF
配置 crictl 命令行
cat <<EOF | tee /etc/crictl.yaml
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 30
debug: false
EOF

启动并加载 kubeadm-ha 镜像

systemctl enable containerd
systemctl restart containerd
gunzip -c kubeadm-ha-base-amd64.tar | ctr -n k8s.io images import -
运行 kubeadm-ha 镜像
ctr -n k8s.io run -d --net-host \--mount type=bind,src=$PWD/registry,dst=/var/lib/registry,options=rbind:ro \--mount type=bind,src=$PWD/packages,dst=/kubernetes/packages,options=rbind:ro \--mount type=bind,src=$PWD/kubeadm-ha,dst=/etc/ansible,options=rbind:ro \docker.io/setzero/kubeadm-ha:base \kubeadm-ha
当镜像仓库不能使用
[root@k8s-deplay data]# cat kubeadm-ha-images.sh 
ctr -n k8s.io tasks ls
ctr -n k8s.io tasks kill kubeadm-hactr -n k8s.io containers rm kubeadm-hactr -n k8s.io run -d --net-host \--mount type=bind,src=$PWD/registry,dst=/var/lib/registry,options=rbind:ro \--mount type=bind,src=$PWD/packages,dst=/kubernetes/packages,options=rbind:ro \--mount type=bind,src=$PWD/kubeadm-ha,dst=/etc/ansible,options=rbind:ro \docker.io/setzero/kubeadm-ha:base \kubeadm-ha
推送镜像到已有镜像库(可选项,可跳过)
# 命令格式:sync-images 镜像库地址 镜像库用户名 镜像库用户密码# containerd 示例
ctr -n k8s.io task exec -t --exec-id "shell$RANDOM" kubeadm-ha bash
sync-images harbor.custom.io/kubeadm-ha admin Harbor12345# docker 示例
docker exec -it kubeadm-ha bash
sync-images harbor.custom.io/kubeadm-ha admin Harbor12345

编写配置文件

  • 编辑变量文件 ./kubeadm-ha/example/variables.yaml,内容如下
# 自定义 hosts 记录,方便后期调整 IP;IP 配置为 kubeadm-ha 镜像运行的服务器的 IP
# 本例中 192.168.73.102 就是运行 kubeadm-ha 镜像的服务器
custom_hosts: "192.168.73.102": - "pkgs.custom.local"- "registry.custom.local"
# 安装时发现 docker 或者 containerd 配置被修改则强制其重启应用新配置
# 重启可能中断集群安装,再次执行集群安装命令即可
restar_container_manager_force: true
# 注意地址末尾 / 必须加上
base_yum_repo: http://pkgs.custom.local:12480/packages/
epel_yum_repo: http://pkgs.custom.local:12480/packages/
docker_yum_repo: http://pkgs.custom.local:12480/packages/
kubernetes_yum_repo: http://pkgs.custom.local:12480/packages/
base_apt_repo: deb [trusted=yes] http://pkgs.custom.local:12480 packages/
docker_apt_repo: deb [trusted=yes] http://pkgs.custom.local:12480 packages/
kubernetes_apt_repo: deb [trusted=yes] http://pkgs.custom.local:12480 packages/
# 若使用 Docker 作为运行时,则添加此配置
cri_dockerd_download_url: http://pkgs.custom.local:12480/packages/cri-dockerd.tgz
# 设置信任镜像库
docker_insecure_registries:
- "registry.custom.local:12480"
containerd_registries:"registry.custom.local:12480": "http://registry.custom.local:12480"
# 配置镜像地址
kube_image_repository: registry.custom.local:12480/kubeadm-ha

参考 01-集群安装 编写 ansible inventory 文件

[root@localhost kubeadm-ha]# vi example/hosts.m-master.hostname.ini 
[root@localhost kubeadm-ha]# cat example/hosts.m-master.hostname.ini 
; 将所有节点的信息在这里填写
;    第一个字段                  为 kubernetes 节点 nodeName,注意必须由小写字母、数字,“-”或“.”组成,并且必须以小写字母或数字开头和结尾
;    第二个字段 ansible_host     为节点内网IP
;    第三个字段 ansible_port     为节点 sshd 监听端口
;    第四个字段 ansible_user     为节点远程登录用户名
;    第五个字段 ansible_ssh_pass 为节点远程登录用户密码 
[all]
k8s-master3 ansible_host=192.168.73.98 ansible_port=22 ansible_user="root" ansible_ssh_pass="123456"
k8s-master2 ansible_host=192.168.73.99 ansible_port=22 ansible_user="root" ansible_ssh_pass="123456"
k8s-master1 ansible_host=192.168.73.100 ansible_port=22 ansible_user="root" ansible_ssh_pass="123456"
k8s-node1   ansible_host=192.168.73.101 ansible_port=22 ansible_user="root" ansible_ssh_pass="123456"
k8s-deplay   ansible_host=192.168.73.102 ansible_port=22 ansible_user="root" ansible_ssh_pass="123456"; 私有云:
;    VIP 负载模式:
;       也就是负载均衡器 + keepalived 模式,比如常用的 haproxy + keepalived。
;       本脚本中负载均衡器有 nginx、haproxy 可供选择,设置 lb_mode 即可进行任意切换。
;       设置 lb_kube_apiserver_ip 即表示启用 keepalived,请先与服务器提供部门协商保留一个IP作为 lb_kube_apiserver_ip,
;       一般 lb 节点组中有两个节点就够了,lb节点组中第一个节点为 keepalived 的 master 节点,剩下的都为 backed 节点。
;
;    节点本地负载模式:
;       只启动负载均衡器,不启用 keepalived(即不设置 lb_kube_apiserver_ip),
;       此时 kubelet 链接 apiserver 地址为 127.0.0.1:lb_kube_apiserver_port。
;       使用此模式时请将 lb 节点组置空。
;
; 公有云:
;    不推荐使用 slb 模式,建议直接使用节点本地负载模式。
;    若使用 slb 模式,请先使用节点本地负载模式进行部署,
;    部署成功后再切换至 slb 模式:
;       将 lb_mode 修改为 slb,将 lb_kube_apiserver_ip 设置为购买到的 slb 内网ip,
;       修改 lb_kube_apiserver_port 为 slb 监听端口。
;    再次运行初始化集群脚本即可切换至 slb 模式。
[lb]
k8s-master3
k8s-master2
k8s-master1; 注意etcd集群必须是1,3,5,7...奇数个节点
[etcd]
k8s-master3
k8s-master2
k8s-master1[kube-master]
k8s-master3
k8s-master2
k8s-master1[kube-worker]
k8s-master3
k8s-master2
k8s-master1
k8s-node1; 预留组,后续添加master节点使用
[new-master]; 预留组,后续添加worker节点使用
[new-worker]; 预留组,后续添加etcd节点使用
[new-etcd]; 预留组,后续删除worker角色使用
[del-worker]; 预留组,后续删除master角色使用
[del-master]; 预留组,后续删除etcd角色使用
[del-etcd]; 预留组,后续删除节点使用
[del-node];-------------------------------------- 以下为基础信息配置 ------------------------------------;
[all:vars]
; 是否跳过节点物理资源校验,Master节点要求2c2g以上,Worker节点要求2c4g以上
skip_verify_node=false
; kubernetes版本
kube_version="1.30.2"; 容器运行时类型,可选项:containerd,docker;默认 containerd
container_manager="containerd"; 负载均衡器
;   有 nginx、haproxy 和 slb 可选,默认使用 nginx
lb_mode="nginx"
; 使用负载均衡后集群 apiserver ip,设置 lb_kube_apiserver_ip 变量,则启用负载均衡器 + keepalived
; lb_kube_apiserver_ip="192.168.56.15"
; 使用负载均衡后集群 apiserver port
lb_kube_apiserver_port="8443"; 网段选择:pod 和 service 的网段不能与服务器网段重叠,
; 若有重叠请配置 `kube_pod_subnet``kube_service_subnet` 变量设置 pod 和 service 的网段,示例参考:
;    如果服务器网段为:10.0.0.1/8
;       pod 网段可设置为:192.168.0.0/18
;       service 网段可设置为 192.168.64.0/18
;    如果服务器网段��:172.16.0.1/12
;       pod 网段可设置为:10.244.0.0/18
;       service 网段可设置为 10.244.64.0/18
;    如果服务器网段为:192.168.0.1/16
;       pod 网段可设置为:10.244.0.0/18
;       service 网段可设置为 10.244.64.0/18
; 集群pod ip段,默认掩码位 1816384 个ip
kube_pod_subnet="10.244.0.0/18"
; 集群service ip段
kube_service_subnet="10.244.64.0/18"
; 分配给节点的 pod 子网掩码位,默认为 24256 个ip,故使用这些默认值可以纳管 16384/256=64 个节点。
kube_network_node_prefix="24"; node节点最大 pod 数。数量与分配给节点的 pod 子网有关,ip 数应大于 pod 数。
; https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr
kube_max_pods="110"; 集群网络插件,目前支持flannel,calico
network_plugin="calico"; 若服务器磁盘分为系统盘与数据盘,请修改以下路径至数据盘自定义的目录。
; Kubelet 根目录
kubelet_root_dir="/var/lib/kubelet"
; docker容器存储目录
docker_storage_dir="/var/lib/docker"
; containerd容器存储目录
containerd_storage_dir="/var/lib/containerd"
; Etcd 数据根目录
etcd_data_dir="/var/lib/etcd"

集群部署

  • 使用 containerd 进行集群部署
ctr -n k8s.io task exec -t --exec-id "shell$RANDOM" kubeadm-ha bash
ansible-playbook -i example/hosts.m-master.hostname.ini  -e @example/variables.yaml 90-init-cluster.yml

安装 helm(可选项,可跳过),k8s-master1上执行

下载helm客户端
curl -sO http://pkgs.custom.local:12480/packages/helm.tar.gz
解压压缩包(以linux-amd64为例)
tar -zxvf helm.tar.gz
将文件移动到PATH目录中(以linux-amd64为例)
sudo mv linux-amd64/helm /usr/bin/helm
执行命令,出现以下信息即部署成功。
$ helm version
version.BuildInfo{Version:"v3.12.3", GitCommit:"3a31588ad33fe3b89af5a2a54ee1d25bfe6eaa5e",   GitTreeState:"clean", GoVersion:"go1.20.7"}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com