已开启
docs(bke): add installation and operations guide #212
zhangzq1011创建于 8月6日
docs(bke): add installation and operations guide #212
已开启
共 57 个文件变更+5451-0
| @@ -0,0 +1,37 @@ | |||
| 1 | +# BKE 安装部署与运维手册 | ||
| 2 | + | ||
| 3 | +> 本手册由 BKE 历史资料整理而来,部分命令、组件版本和部署方式可能与当前 openFuyao 版本存在差异,请结合实际版本使用。 | ||
| 4 | + | ||
| 5 | + | ||
| 6 | + | ||
| 7 | +> Cluster API 是 Kubernetes的一个子项目,专注于提供声明式API和工具来简化配置,实现创建、升级、管理多个Kubernetes集群。 | ||
| 8 | +> | ||
| 9 | +> Cluster API项目是由 Kubernetes Special Interest Group (SIG) Cluster Lifecycle 发起,使用Kubernetes 风格的API和模式为平台运营商提供自动化集群生命周期管理。支持基础设施(如虚拟机、网络、负载均衡和VPC)以及Kubernetes的定义方式与应用程序开发人员部署和管理工作负载的方式相同。可以在各种基础设施环境中实现一致可重复的集群部署。 | ||
| 10 | + | ||
| 11 | +Cluster API 是一款声明式的Kubernetes集群管理工具,其由多个组件构成。公有云厂商实现了自己的cluster-api-provider来支持通过cluster-api拉起公有云虚拟机以及构建Kubernetes集群。 | ||
| 12 | + | ||
| 13 | +cluster-api-bke项目同样是Cluster API项目的一个provider,它管理的对象是裸机;即在私有云情况下,客户提供了数台服务器Cluster API + cluster-api-bke实现这些服务器Kubernetes的搭建、扩缩容等操作 | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | +## KONK | ||
| 18 | + | ||
| 19 | +KONK是一系列工具的集合,目前包含bke 、cluster-api-bke、bkeagent、bocoperator、manifests,它们共同协作完成服务器从裸机到可治理的Kubernetes的转变 | ||
| 20 | + | ||
| 21 | +bke:二进制工具,能启动集群部署、各种服务部署、镜像迁移等功能,属于KONK的起点 | ||
| 22 | + | ||
| 23 | +cluster-api-bke: Cluster API 的裸机管理k8s的provider,当然我们为他额外了添加了更多的K8s生态组件部署功能 | ||
| 24 | + | ||
| 25 | +bkeagent:运行在各个节点的二进制文件,托管于systemd,负责监听kube-apiserver crd资源从而操作宿主机,可称为云原生的宿主机管理工具 | ||
| 26 | + | ||
| 27 | +bocoperator:负责boc产品的部署,通过监听k8s crd资源来触发boc组件的部署 | ||
| 28 | + | ||
| 29 | +manifests:按照一定的规范整合yaml资源,包含k8s生态组件、boc部署组件 | ||
| 30 | + | ||
| 31 | + | ||
| 32 | + | ||
| 33 | +## 架构图 | ||
| 34 | + | ||
| 35 | + | ||
| 36 | + | ||
| 37 | + | ||
| @@ -0,0 +1,69 @@ | |||
| 1 | +# BKE 安装部署与运维手册 | ||
| 2 | + | ||
| 3 | +* [前言](README.md) | ||
| 4 | + | ||
| 5 | +#### 主机预检 | ||
| 6 | + | ||
| 7 | +- 1.1 [使用](content/c1precheck/c1use.md) | ||
| 8 | +- 1.2 [配置及场景](content/c1precheck/c2config.md) | ||
| 9 | +- 1.3 [与boc集成](content/c1precheck/c3controller.md) | ||
| 10 | +- 1.4 [检查条目](content/c1precheck/c4task.md) | ||
| 11 | + | ||
| 12 | +#### 集群安装 | ||
| 13 | + | ||
| 14 | +- 2.1 [资源要求](content/c2installation/c1environment.md) | ||
| 15 | +- 2.2 [开放端口](content/c2installation/c1openport.md) | ||
| 16 | +- 2.3 [安装](content/c2installation/c2installation.md) | ||
| 17 | +- 2.4 [配置文件详解](content/c2installation/c3configurations.md) | ||
| 18 | +- 2.5 [配置文件扩展](content/c2installation/c4configaddon.md) | ||
| 19 | +- 2.6 [配置文件示例](content/c2installation/c5allconfigurations.md) | ||
| 20 | +- 2.7 [集群检查](content/c2installation/c6clustercheck.md) | ||
| 21 | +- 2.8 [支持矩阵](content/c2installation/c7supportmatrix.md) | ||
| 22 | + | ||
| 23 | +#### 集群管理 | ||
| 24 | + | ||
| 25 | +- 3.1 [管理集群](content/c3kubernetes/c1cluster.md) | ||
| 26 | +- 3.2 [纳管集群](content/c3kubernetes/c2cluster.md) | ||
| 27 | +- 3.3 [健康集群维护注意事项](content/c3kubernetes/c3healthycluster.md) | ||
| 28 | + | ||
| 29 | +#### 制作部署包 | ||
| 30 | + | ||
| 31 | +- 4.1 [制作部署资源模板](content/c4prepare/c1manifests.md) | ||
| 32 | +- 4.2 [制作部署依赖](content/c4prepare/c2depend.md) | ||
| 33 | +- 4.3 [构建部署包](content/c4prepare/c4bkebuild.md) | ||
| 34 | +- 4.4 [制作扩展rpm源](content/c4prepare/c4extendedrpm.md) | ||
| 35 | +- 4.5 [构建增量包](content/c4prepare/c5bkebuildpatch.md) | ||
| 36 | +- 4.6 [制作在线依赖镜像](content/c4prepare/c5onlineimage.md) | ||
| 37 | +- 4.7 [配置文件示例](content/c4prepare/c6config.md) | ||
| 38 | +- 4.8 [额外k8s版本支持](content/c4prepare/c7k8ssupport.md) | ||
| 39 | + | ||
| 40 | +#### bocoperator | ||
| 41 | +- 5.2 [部署](content/c5operator/c1deploy.md) | ||
| 42 | +- 5.3 [部署资源制作](content/c5operator/c2manifest.md) | ||
| 43 | + | ||
| 44 | +#### 场景演示 | ||
| 45 | + | ||
| 46 | +- 6.1 [部署概要流程](content/c6scenario/c0deployprocess.md) | ||
| 47 | +- 6.2 [部署包制作](content/c6scenario/c1build.md) | ||
| 48 | +- 6.3 [初始化引导节点](content/c6scenario/c2bkeinit.md) | ||
| 49 | +- 6.4 [部署管理集群](content/c6scenario/c3createcluster.md) | ||
| 50 | +- 6.5 [主机IP变更后恢复集群](content/c6scenario/c4clusterrecovery.md) | ||
| 51 | + | ||
| 52 | +#### 技术细节 | ||
| 53 | + | ||
| 54 | +- 7.1 [引导节点](content/c7technical/c1bootstrap.md) | ||
| 55 | +- 7.2 [新业务集群部署](content/c7technical/c4deploybussiness.md) | ||
| 56 | +- 7.3 [老业务集群纳管](content/c7technical/c5nanotube.md) | ||
| 57 | +- 7.4 [BKEAgent启动器](content/c7technical/c6agentlauncher.md) | ||
| 58 | + | ||
| 59 | +#### 测试 | ||
| 60 | + | ||
| 61 | +- 8.1 [自动测试](content/c8autotest/c1autotest.md) | ||
| 62 | + | ||
| 63 | +#### 路线图 | ||
| 64 | + | ||
| 65 | +- 9.1 [路线图](content/c9roadmap/c1roadmap.md) | ||
| 66 | + | ||
| 67 | +#### 常见问题 | ||
| 68 | + | ||
| 69 | +- [常见问题](content/FAQ/faq.md) | ||
| @@ -0,0 +1,203 @@ | |||
| 1 | +### 常见问题 | ||
| 2 | + | ||
| 3 | +1. Kubernetes证书有效期 ? | ||
| 4 | + | ||
| 5 | + 目前部署的kubernetes证书有效期为一百年。 | ||
| 6 | + | ||
| 7 | +2. 如何获取集群的证书,token, kubeconfig等信息? | ||
| 8 | + | ||
| 9 | + 以如下bkeCluster为例,所创建出来的集群相关证书等内容在管理集群 命名空间xxx下,以secret形式保存,具体见下图。 | ||
| 10 | + | ||
| 11 | + ```yaml | ||
| 12 | + apiVersion: bke.bocloud.com/v1beta1 | ||
| 13 | + kind: BKECluster | ||
| 14 | + metadata: | ||
| 15 | + name: zzz | ||
| 16 | + namespace: bke-xxx | ||
| 17 | + ``` | ||
| 18 | + | ||
| 19 | + 证书命名规则为 "集群名称-证书名称" | ||
| 20 | + | ||
| 21 | +  | ||
| 22 | + | ||
| 23 | +3. 配置文件扩展章节的adonn是否都能部署? | ||
| 24 | + | ||
| 25 | + 支持部署,前置条件是使用的镜像仓库里有对应的镜像,才能确保addon能成功部署并运行。 | ||
| 26 | + | ||
| 27 | +4. konk部署的addon与手动部署的addon功能上有误吗? | ||
| 28 | + | ||
| 29 | + 没有区别,konk只是将手动提交yaml的过程转换为了使用代码自动提交。实际功能与相关addon镜像及addon版本有关 | ||
| 30 | + | ||
| 31 | +5. 已经开始部署了,但有一个addon忘记填写了,还能修改吗? | ||
| 32 | + | ||
| 33 | + 可以,在EnsureAddonDeploy阶段之前或之后进行修改都能生效并触发部署,但需要注意填写的addon是否对其他addon具有依赖性 | ||
| 34 | + | ||
| 35 | +6. 引导节点iptables 不能是nftables版本 | ||
| 36 | + | ||
| 37 | + 目前bke会在部署时候将iptables(nf_tables)转换为老的版本iptables,若出现无法转换成功请自主转换 | ||
| 38 | + | ||
| 39 | +7. 我想要部署后的master用作worker节点该如何设置? | ||
| 40 | + | ||
| 41 | + 正常情况下 master节点的角色定义如下,注意role字段 | ||
| 42 | + | ||
| 43 | + ```yaml | ||
| 44 | + - role: | ||
| 45 | + - master | ||
| 46 | + - etcd | ||
| 47 | + ip: x.x.x.x | ||
| 48 | + port: "xx" | ||
| 49 | + username: xxx | ||
| 50 | + password: <ssh-password> | ||
| 51 | + hostname: xxx | ||
| 52 | + ``` | ||
| 53 | + | ||
| 54 | + 对于问题描述情况将master这一角色替换为 master/node即可 | ||
| 55 | + | ||
| 56 | + ```yaml | ||
| 57 | + - role: | ||
| 58 | + - master/node # !!! | ||
| 59 | + - etcd | ||
| 60 | + ip: x.x.x.x | ||
| 61 | + port: "xx" | ||
| 62 | + username: xxx | ||
| 63 | + password: <ssh-password> | ||
| 64 | + hostname: xxx | ||
| 65 | + ``` | ||
| 66 | + | ||
| 67 | + 注意以下为错误实例,填写时请避免 | ||
| 68 | + | ||
| 69 | + ```yaml | ||
| 70 | + - role: | ||
| 71 | + - master | ||
| 72 | + - node # 不能分开写!!! | ||
| 73 | + - etcd | ||
| 74 | + ip: x.x.x.x | ||
| 75 | + port: "xx" | ||
| 76 | + username: xxx | ||
| 77 | + password: <ssh-password> | ||
| 78 | + hostname: xxx | ||
| 79 | + ``` | ||
| 80 | + | ||
| 81 | +8. 删除BKECluster或删除BKECluster中节点时对实际机器做了什么? | ||
| 82 | + | ||
| 83 | + BKECluster是一个实际的集群在管理集群中的CR映射,无其他特殊说明或特殊配置任何对BKECluster的操作都将作用到实际的集群之上 | ||
| 84 | + | ||
| 85 | + - 删除BKECluster,也代表将对应的集群进行删除,BKE控制程序会对该集群做删除处理并对所在节点做清理,包含以下内容 | ||
| 86 | + | ||
| 87 | + 1. 容器清理 | ||
| 88 | + | ||
| 89 | + - docker运行时,删除所有命名以"k8s_"开头的容器 | ||
| 90 | + - containerd运行时,删除k8s.io命名空间下的所有容器 | ||
| 91 | + | ||
| 92 | + 2. kubelet清理 | ||
| 93 | + | ||
| 94 | + 在BKE中kubelet以容器的方式运行并且数据目录(详见配置文件详解中kubelet章节)会挂载到主机,清理主要是对该目录进行清理,以及kubelet容器本身 | ||
| 95 | + | ||
| 96 | + - umount kubelet目录,所有k8s容器有关的挂载都会在该目录下的pods子目录进行挂载,移除kubelet数据文件夹前会先进行umount操作 | ||
| 97 | + | ||
| 98 | + ```sh | ||
| 99 | + #参考 umount 脚本 /var/lib/kubelet对应实际的配置目录,此处仅做示例 | ||
| 100 | + for m in $(sudo tac /proc/mounts | sudo awk '{print $2}'|sudo grep /var/lib/kubelet);do sudo umount $m||true; done | ||
| 101 | + ``` | ||
| 102 | + | ||
| 103 | + - kubelet容器删除 | ||
| 104 | + | ||
| 105 | + - kubelet数据文件夹删除 | ||
| 106 | + | ||
| 107 | + - 容器挂载目录删除,其中CNI相关的目录在运行时为containerd的情况下不会删除 | ||
| 108 | + | ||
| 109 | + ```go | ||
| 110 | + RunKubeletPreCreateDirs = []string{ | ||
| 111 | + "/var/lib/calico", | ||
| 112 | + "/var/lib/lxc", | ||
| 113 | + "/opt/fabric", | ||
| 114 | + "/opt/cni", | ||
| 115 | + "/usr/libexec/kubernetes", | ||
| 116 | + "/var/lib/cni", | ||
| 117 | + "/var/lib/etcd", | ||
| 118 | + "/var/log/pods", | ||
| 119 | + "/var/log/containers", | ||
| 120 | + "/etc/cni", | ||
| 121 | + "/etc/kubernetes", | ||
| 122 | + } | ||
| 123 | + ``` | ||
| 124 | + | ||
| 125 | + 3. 证书删除 | ||
| 126 | + | ||
| 127 | + 对配置的证书目录(详见配置文件详解中certificatesDir字段解释)进行删除 | ||
| 128 | + | ||
| 129 | + 4. 静态pod yaml存放目录删除 | ||
| 130 | + | ||
| 131 | + 对配置的证书目录(详见配置文件详解中kubelet章节)进行删除 | ||
| 132 | + | ||
| 133 | + 5. 其他清理(部署中创建的文件或文件夹) | ||
| 134 | + | ||
| 135 | + - kubectl (/usr/bin/kubectl) | ||
| 136 | + | ||
| 137 | + - iptables 清理 | ||
| 138 | + | ||
| 139 | + ```shell | ||
| 140 | + iptables -F -t raw && iptables -F -t filter && iptables -t nat -F && iptables -t mangle -F && iptables -X -t nat && iptables -X -t raw && iptables -X -t mangle && iptables -X -t filter | ||
| 141 | + ``` | ||
| 142 | + | ||
| 143 | + - 路由条目清理 | ||
| 144 | + | ||
| 145 | + 核心路由表(移除 boc0和cali开头的路由) | ||
| 146 | + | ||
| 147 | + ```sh | ||
| 148 | + ip route show all | awk '($1!="default" && $3~/^(boc0|cali.*)$/) {printf "%s %s %s\n",$1,$2,$3}' | ||
| 149 | + ``` | ||
| 150 | + | ||
| 151 | + 邻居表(移除 boc0和cali开头的路由) | ||
| 152 | + | ||
| 153 | + ```sh | ||
| 154 | + ip neigh show all | awk '($3~/^(boc0|cali.*)$/) {print}' | awk '$4 == "lladdr" || $4 == "FAILED" {printf "%s %s %s\n",$1,$2,$3}' | ||
| 155 | + ``` | ||
| 156 | + | ||
| 157 | + - /etc/kubernetes/ 目录 | ||
| 158 | + | ||
| 159 | + 6. 容器运行时删除 | ||
| 160 | + | ||
| 161 | + 容器运行时的删除在BKECluster中通过` bke.bocloud.com/deep-restore-node` annotation控制(详见配置文件详解中annotation部分) | ||
| 162 | + | ||
| 163 | + - 运行时清理 | ||
| 164 | + | ||
| 165 | + docker | ||
| 166 | + | ||
| 167 | + ```sh | ||
| 168 | + #删除所有容器 | ||
| 169 | + docker ps -a -q | awk '{print $1}' | xargs docker rm -f --volumes | ||
| 170 | + #删除所有数据 | ||
| 171 | + docker system prune -a -f --volumes | ||
| 172 | + #停止docker | ||
| 173 | + systemctl stop docker && systemctl disable docker | ||
| 174 | + #卸载docker | ||
| 175 | + yum remove -y docker* containerd.io | ||
| 176 | + ``` | ||
| 177 | + | ||
| 178 | + containerd | ||
| 179 | + | ||
| 180 | + ```sh | ||
| 181 | + #删除所有容器 | ||
| 182 | + crictl pods -q | awk '{print $1}' | xargs crictl rmp -f | ||
| 183 | + nerdctl ps -a -q | awk '{print $1}' | xargs nerdctl rm -f --volumes | ||
| 184 | + #停止containerd | ||
| 185 | + systemctl stop containerd && systemctl disable containerd | ||
| 186 | + #卸载containerd | ||
| 187 | + rm -rf /usr/bin/containerd /usr/bin/containerd-shim /usr/bin/containerd-shim-runc-v1 /usr/bin/containerd-shim-runc-v2 /usr/bin/crictl /etc/crictl.yaml /usr/bin/ctr /usr/bin/nerdctl /usr/bin/containerd-stress /usr/lib/systemd/system/containerd.service usr/local/sbin/runc /usr/local/beyondvm /etc/containerd/ | ||
| 188 | + ``` | ||
| 189 | + | ||
| 190 | + - 数据目录删除 | ||
| 191 | + | ||
| 192 | + docker默认`/var/lib/docker`,containerd对应`/var/lib/containerd`以实际配置为准(详见配置文件详解中containerRuntime部分) | ||
| 193 | + | ||
| 194 | + - CNI目录清理 | ||
| 195 | + | ||
| 196 | + `/var/lib/cni` ,`/etc/cni`,` /opt/cni` | ||
| 197 | + | ||
| 198 | + - 删除BKECluster中节点 | ||
| 199 | + | ||
| 200 | + 1. 从管理集群中缩容MachineDeployment副本数->触发machine资源删除->触发bkeMachine删除->做节点清理(参考BKECluster删除清理内容) | ||
| 201 | + 2. 从目标集群中删除该节点对应node资源 | ||
| 202 | + | ||
| 203 | + 注:如果是HA高可用集群且删除的是master节点,还会动态修改现有未删除master节点上的HA配置(haproxy keepalived) | ||
| @@ -0,0 +1,30 @@ | |||
| 1 | +### 预检项目 | ||
| 2 | + | ||
| 3 | +#### 背景 | ||
| 4 | + | ||
| 5 | +- 在boc多年的客户现场支持过程中,我们发现很多问题在部署之初就存在的,在后续使用过程中问题渐渐暴露出来。这导致我们需要花费大量的精力去修复问题、去和客户做解释说明,这大大增加了我们的工作量、以及降低了客户对我们公司产品的信任。 | ||
| 6 | +- 所以我们需要有在部署前对部署集群做资源检查的能力,这样能大大减少我们交付人员现场的交付压力以及降低在后续出现重大问题的可能性。 | ||
| 7 | + | ||
| 8 | +#### 介绍 | ||
| 9 | + | ||
| 10 | +- 该项目用途一,在boc产品部署之前,对客户提供的机器进行检查 | ||
| 11 | +- 该项目用途二,在boc产品部署完成后,要部署业务集群时,对业务集群进行检查 | ||
| 12 | +- 针对以上两个用途,预检项目将分别提供二进制文件用于裸机检查、CRD文件用于BOC对接检查 | ||
| 13 | + | ||
| 14 | +#### 使用方法 | ||
| 15 | + | ||
| 16 | +1. 准备要检查的机器的配置文件`config.yaml` | ||
| 17 | +2. 在任意节点执行检查命令 | ||
| 18 | + | ||
| 19 | +```shell | ||
| 20 | +$ cd /tmp/v1 | ||
| 21 | +$ ./bc_amd64 run -f config.yaml | ||
| 22 | +``` | ||
| 23 | + | ||
| 24 | +3. 执行完成后会在当前目录下生成`report.html`报告文件 | ||
| 25 | +4. 执行命令`./bc_amd64 report`可启动一个`8080`端口的http服务,通过浏览器打开即可查看报告 | ||
| 26 | + | ||
| 27 | +```shell | ||
| 28 | +$ ./bc_amd64 report | ||
| 29 | +2023/05/26 11:35:22 启动httpServer 0.0.0.0:8080... | ||
| 30 | +``` | ||
| @@ -0,0 +1,227 @@ | |||
| 1 | +### 配置文件与使用场景 | ||
| 2 | + | ||
| 3 | +#### 配置 | ||
| 4 | + | ||
| 5 | +1. 使用`./bc_amd64 config` 指令生成示例配置 | ||
| 6 | + | ||
| 7 | +```shell | ||
| 8 | +$ ./bc_amd64 config | ||
| 9 | +当前目录下生成配置文件config.yaml | ||
| 10 | +$ cat config.yaml | ||
| 11 | + | ||
| 12 | +hosts: | ||
| 13 | + - ip: 192.168.1.120 | ||
| 14 | + username: root | ||
| 15 | + password: "<ssh-password>" | ||
| 16 | + port: "22" | ||
| 17 | + role: | ||
| 18 | + - bootstrap | ||
| 19 | + - ip: 192.168.1.121 | ||
| 20 | + username: root | ||
| 21 | + password: "<ssh-password>" | ||
| 22 | + port: "22" | ||
| 23 | + role: | ||
| 24 | + - manager | ||
| 25 | + - master | ||
| 26 | + - ip: 192.168.1.122 | ||
| 27 | + username: root | ||
| 28 | + password: "<ssh-password>" | ||
| 29 | + port: "22" | ||
| 30 | + role: | ||
| 31 | + - master | ||
| 32 | + - ip: 192.168.1.123 | ||
| 33 | + username: root | ||
| 34 | + password: "<ssh-password>" | ||
| 35 | + port: "22" | ||
| 36 | + role: [] | ||
| 37 | + - ip: 192.168.1.124 | ||
| 38 | + username: root | ||
| 39 | + password: "<ssh-password>" | ||
| 40 | + port: "22" | ||
| 41 | + role: [] | ||
| 42 | + - ip: 192.168.1.125 | ||
| 43 | + username: root | ||
| 44 | + password: "<ssh-password>" | ||
| 45 | + port: "22" | ||
| 46 | + role: [] | ||
| 47 | +dataDir: "" | ||
| 48 | +kubeletDir: "" | ||
| 49 | +ntpServer: cn.pool.ntp.org:123 | ||
| 50 | +runInPod: false | ||
| 51 | +checkLevel: 0 | ||
| 52 | +``` | ||
| 53 | + | ||
| 54 | +#### 配置参数说明 | ||
| 55 | + | ||
| 56 | +| 参数 | 是否必填 | 默认值 | 备注 | | ||
| 57 | +| ------------- | -------- | ------ | ------------------------------------------------------------ | | ||
| 58 | +| runInPod | 否 | false | 检查裸机值为false<br>与boc集成值为true,当为true将忽略引导节点和管理节点的检查 | | ||
| 59 | +| checkLevel | 否 | 0 | 0表示全检查,从1-9级表示检查条目越来越多<br>1 主机信息,只是获取cpu、内存等<br>2 内核版本及内核参数设置<br>3 主机资源检查<br>4 主机软件修改<br>5 主机端口占用检查<br>6.主机之间端口连通性检<br>7/8/9 不重要的检查 | | ||
| 60 | +| ntpServer | 是 | 无 | 检查ntpserver地址是否可达 | | ||
| 61 | +| kubeletDir | 否 | / | 检查空闲磁盘空间 | | ||
| 62 | +| dataDir | 否 | / | 检查空闲磁盘空间 | | ||
| 63 | +| host.ip | 是 | 无 | 例:192.168.1.125 | | ||
| 64 | +| host.username | 是 | 用户 | 例:root ,如果用户名密码均为空则跳过该主机 | | ||
| 65 | +| host.password | 是 | 密码 | 例:password ,如果用户名密码均为空则跳过该主机 | | ||
| 66 | +| host.port | 是 | 端口 | 例:22 | | ||
| 67 | +| host.role | 否 | 角色 | 例:master | | ||
| 68 | +| ignoreError | 否 | false | 例:false | | ||
| 69 | + | ||
| 70 | +#### 主机角色 | ||
| 71 | + | ||
| 72 | +| 角色 | 功能 | 备注 | | ||
| 73 | +| --------- | -------------------------------------- | ------------------------------------------------- | | ||
| 74 | +| bootstrap | 表示为引导节点,即执行`bke init`的节点 | 只在裸机检查时有此角色,与boc集成的预检中无此角色 | | ||
| 75 | +| manager | 表示为管理节点,即boc portal机器的节点 | 裸机检查和boc集成的场景均存在该角色 | | ||
| 76 | +| master | 表示k8s master节点 | 裸机检查和boc集成的场景均存在该角色 | | ||
| 77 | +| node | 表示k8s node节点 | 裸机检查和boc集成的场景中均存在该角色 | | ||
| 78 | + | ||
| 79 | +#### 使用场景 | ||
| 80 | + | ||
| 81 | +##### 裸机检查 | ||
| 82 | + | ||
| 83 | +1. 在该场景下 bootstrap 、manager 、master 三个角色必须同时存在,示例如下 | ||
| 84 | + | ||
| 85 | +```yaml | ||
| 86 | +hosts: | ||
| 87 | + - ip: 192.168.1.120 | ||
| 88 | + username: root | ||
| 89 | + password: "<ssh-password>" | ||
| 90 | + port: "22" | ||
| 91 | + role: | ||
| 92 | + - bootstrap | ||
| 93 | + - ip: 192.168.1.121 | ||
| 94 | + username: root | ||
| 95 | + password: "<ssh-password>" | ||
| 96 | + port: "22" | ||
| 97 | + role: | ||
| 98 | + - manager | ||
| 99 | + - master | ||
| 100 | + - ip: 192.168.1.122 | ||
| 101 | + username: root | ||
| 102 | + password: "<ssh-password>" | ||
| 103 | + port: "22" | ||
| 104 | + role: | ||
| 105 | + - manager | ||
| 106 | + - ip: 192.168.1.123 | ||
| 107 | + username: root | ||
| 108 | + password: "<ssh-password>" | ||
| 109 | + port: "22" | ||
| 110 | + role: | ||
| 111 | + - master | ||
| 112 | + - ip: 192.168.1.124 | ||
| 113 | + username: root | ||
| 114 | + password: "<ssh-password>" | ||
| 115 | + port: "22" | ||
| 116 | + role: [] | ||
| 117 | +dataDir: "" | ||
| 118 | +kubeletDir: "" | ||
| 119 | +ntpServer: cn.pool.ntp.org:123 | ||
| 120 | +runInPod: false | ||
| 121 | +``` | ||
| 122 | + | ||
| 123 | +| 主机 | 角色 | 示意 | | ||
| 124 | +| ------------- | --------------- | -------------------- | | ||
| 125 | +| 192.168.1.120 | bootstrap | 引导节点 | | ||
| 126 | +| 192.168.1.121 | manager,master | 管理节点,master节点 | | ||
| 127 | +| 192.168.1.122 | manager | 管理节点,worker节点 | | ||
| 128 | +| 192.168.1.123 | master | 业务节点,master节点 | | ||
| 129 | +| 192.168.1.124 | | 业务节点,worker节点 | | ||
| 130 | + | ||
| 131 | +##### boc集成的业务集群检查1 | ||
| 132 | + | ||
| 133 | +1. 集成后的业务集群检查是没有bootstrap角色的,示例配置 | ||
| 134 | +2. 注意这里没有配置manager节点,也就是说只检查目标机器的系统及资源情况,与管理集群的端口连通性是无法检查的 | ||
| 135 | + | ||
| 136 | +```yaml | ||
| 137 | +hosts: | ||
| 138 | + - ip: 192.168.1.123 | ||
| 139 | + username: root | ||
| 140 | + password: "<ssh-password>" | ||
| 141 | + port: "22" | ||
| 142 | + role: | ||
| 143 | + - master | ||
| 144 | + - ip: 192.168.1.124 | ||
| 145 | + username: root | ||
| 146 | + password: "<ssh-password>" | ||
| 147 | + port: "22" | ||
| 148 | + role: [] | ||
| 149 | +dataDir: "" | ||
| 150 | +kubeletDir: "" | ||
| 151 | +ntpServer: cn.pool.ntp.org:123 | ||
| 152 | +runInPod: true | ||
| 153 | +``` | ||
| 154 | + | ||
| 155 | +##### boc集成业务集群检查2 | ||
| 156 | + | ||
| 157 | +1. 集成后的业务集群检查是没有bootstrap角色的,示例配置 | ||
| 158 | +2. 注意这里的manger节点配置的用户密码为空,支持的是业务集群到管理节点的端口连通性检查,无法支持管理集群到业务节点的端口连通性检查 | ||
| 159 | +3. 这里的管理节点只需要添加manager就可以了,不用添加master角色 | ||
| 160 | + | ||
| 161 | +```yaml | ||
| 162 | +hosts: | ||
| 163 | + - ip: 192.168.1.121 | ||
| 164 | + username: root | ||
| 165 | + password: "<ssh-password>" | ||
| 166 | + port: "22" | ||
| 167 | + role: | ||
| 168 | + - manager | ||
| 169 | + - ip: 192.168.1.122 | ||
| 170 | + username: | ||
| 171 | + password: "" | ||
| 172 | + port: "22" | ||
| 173 | + role: | ||
| 174 | + - manager | ||
| 175 | + - ip: 192.168.1.123 | ||
| 176 | + username: | ||
| 177 | + password: "" | ||
| 178 | + port: "22" | ||
| 179 | + role: | ||
| 180 | + - master | ||
| 181 | + - ip: 192.168.1.124 | ||
| 182 | + username: root | ||
| 183 | + password: "<ssh-password>" | ||
| 184 | + port: "22" | ||
| 185 | + role: [] | ||
| 186 | +dataDir: "" | ||
| 187 | +kubeletDir: "" | ||
| 188 | +ntpServer: cn.pool.ntp.org:123 | ||
| 189 | +runInPod: true | ||
| 190 | +``` | ||
| 191 | + | ||
| 192 | +##### boc集成业务集群检查3 | ||
| 193 | + | ||
| 194 | +1. 集成后的业务集群检查是没有bootstrap角色的,示例配置 | ||
| 195 | +2. 这里的manger节点填入了正确的用户名密码,会检查管理节点到业务节点的端口连通性,不会检查管理节点的基本资源信息 | ||
| 196 | +3. 此为推荐用法 | ||
| 197 | + | ||
| 198 | +```yaml | ||
| 199 | +hosts: | ||
| 200 | + - ip: 192.168.1.121 | ||
| 201 | + username: root | ||
| 202 | + password: "<ssh-password>" | ||
| 203 | + port: "22" | ||
| 204 | + role: | ||
| 205 | + - manager | ||
| 206 | + - ip: 192.168.1.122 | ||
| 207 | + username: root | ||
| 208 | + password: "<ssh-password>" | ||
| 209 | + port: "22" | ||
| 210 | + role: | ||
| 211 | + - manager | ||
| 212 | + - ip: 192.168.1.123 | ||
| 213 | + username: root | ||
| 214 | + password: "<ssh-password>" | ||
| 215 | + port: "22" | ||
| 216 | + role: | ||
| 217 | + - master | ||
| 218 | + - ip: 192.168.1.124 | ||
| 219 | + username: root | ||
| 220 | + password: "<ssh-password>" | ||
| 221 | + port: "22" | ||
| 222 | + role: [] | ||
| 223 | +dataDir: "" | ||
| 224 | +kubeletDir: "" | ||
| 225 | +ntpServer: cn.pool.ntp.org:123 | ||
| 226 | +runInPod: true | ||
| 227 | +``` | ||
| @@ -0,0 +1,89 @@ | |||
| 1 | + | ||
| 2 | + | ||
| 3 | +### 与boc集成 | ||
| 4 | + | ||
| 5 | +#### 简介 | ||
| 6 | + | ||
| 7 | +- 作为裸机检查预先服务为一个单独的二进制文件,在与boc集成中将提供一个crd与boc产品进行对接 | ||
| 8 | + | ||
| 9 | +#### CRD配置文件介绍 | ||
| 10 | + | ||
| 11 | +```yaml | ||
| 12 | +apiVersion: bocoperator.bocloud.com/v1beta1 | ||
| 13 | +kind: ClusterMachineInspection | ||
| 14 | +metadata: | ||
| 15 | + labels: | ||
| 16 | + app.kubernetes.io/name: clustermachineinspection | ||
| 17 | + app.kubernetes.io/instance: clustermachineinspection-sample | ||
| 18 | + app.kubernetes.io/part-of: bocoperator | ||
| 19 | + app.kubernetes.io/managed-by: kustomize | ||
| 20 | + app.kubernetes.io/created-by: bocoperator | ||
| 21 | + name: clustermachineinspection-sample | ||
| 22 | +spec: | ||
| 23 | + dataDir: "/" #数据目录[非必填] (默认为根目录) | ||
| 24 | + kubeletDir: "/" #kubelet目录[非必填] (默认为根目录) | ||
| 25 | + ntpServer: "/test" #ntpServer地址[非必填] | ||
| 26 | + runInPod: true #是否是在容器中执行[必填] (true) 只用使用二进制方式值为(false) | ||
| 27 | + executeTimes: 8 #执行次数[必填] 大于1 | ||
| 28 | + hosts: #主机信息[必填] | ||
| 29 | + #值为manager/master | ||
| 30 | + #manager 表示为管理节点,即boc portal机器的节点 | ||
| 31 | + #master 表示k8s master节点 | ||
| 32 | + - role: # 角色 | ||
| 33 | + - master | ||
| 34 | + ip: 192.0.2.31 #机器ip[必填] | ||
| 35 | + port: "22" #端口号[必填] | ||
| 36 | + username: root # 用户名密码是必须的,且保证ssh连接是通的,所使用用户需要具有sudo权限 | ||
| 37 | + password: <ssh-password> #密码[必填] | ||
| 38 | + | ||
| 39 | + - role: | ||
| 40 | + - master | ||
| 41 | + ip: 192.0.2.32 | ||
| 42 | + port: "22" | ||
| 43 | + username: root | ||
| 44 | + password: <ssh-password> | ||
| 45 | + | ||
| 46 | + - role: | ||
| 47 | + - master | ||
| 48 | + ip: 192.0.2.33 | ||
| 49 | + port: "22" | ||
| 50 | + username: root | ||
| 51 | + password: <ssh-password> | ||
| 52 | +status: | ||
| 53 | + #当前两个error字段 只和cr的执行状态有关 | ||
| 54 | + errorMessage: "" #如果是failed状态.会展示详细信息 | ||
| 55 | + errorStatus: success #success/failed failed状态会有错误信息 | ||
| 56 | + #如果任务在执行中. 只修改次数. 任务不会终止. 最终次数值为最后一次的修改结果 | ||
| 57 | + #如果任务在执行中, 除次数之外的内容变更, 则任务会重新执行. | ||
| 58 | + #如果认为不再执行中, 只要内容发生变化.则会触发 | ||
| 59 | + executeTimes: 8 #执行次数. 和spec中的执行次数一直则代表执行完成 | ||
| 60 | + failure: 3 #失败数量 | ||
| 61 | + #报告链接地址 | ||
| 62 | + reportUrl: /cmi/default-clustermachineinspection-sample-cmi-clustermachineinspection-sample.html | ||
| 63 | + result: not pass #检查结果.值为paas/not pass | ||
| 64 | + server: | ||
| 65 | + - ip: 192.0.2.31 #ip | ||
| 66 | + logicCpu: 17 #逻辑cpu | ||
| 67 | + memory: 8G #内存 | ||
| 68 | + physicsCpu: 0 #物理cpu | ||
| 69 | + role: master #角色 内容以逗号分隔,工作为节点为"" | ||
| 70 | + success: 9 #成功数量 | ||
| 71 | + total: 14 #总测试数量 | ||
| 72 | + warning: 2 #告警数量 | ||
| 73 | + | ||
| 74 | +``` | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + | ||
| 78 | +#### 与boc集成 | ||
| 79 | + | ||
| 80 | + | ||
| 81 | + | ||
| 82 | + | ||
| 83 | + | ||
| 84 | +#### 工作原理 | ||
| 85 | + | ||
| 86 | + | ||
| 87 | + | ||
| 88 | + | ||
| 89 | + | ||
| @@ -0,0 +1,78 @@ | |||
| 1 | +### 检查任务项 | ||
| 2 | + | ||
| 3 | +注:条目中告警级别表示,表示任务执行失败后的级别,任务执行成功状态一律为成功 | ||
| 4 | + | ||
| 5 | +#### 服务器 | ||
| 6 | + | ||
| 7 | +| 检查项目 | 适用版本 | 告警级别 | 备注 | | ||
| 8 | +| ------------------------------------------------------------ | -------- | -------- | ------------------------ | | ||
| 9 | +| 关闭防火墙 | 全系 | 警告 | 尝试关闭防火墙、尝试失败则警告 | | ||
| 10 | +| 内核版本>=kernel-3.10.0-1160.15.2.el7.x86_64 | 全系 | 失败 | 内核版本小于该版本则失败 | | ||
| 11 | +| ntpserver服务检查 | 全系 | 失败 | 尝试连接ntpserver,无法连接则失败 | | ||
| 12 | +| echo 120 > /proc/sys/kernel/hung_task_timeout_secs <br>echo 1 > /proc/sys/kernel/hung_task_panic | 全系 | 警告 | 检查这两个参数值,不符合则警告 | | ||
| 13 | +| fs.file-max=9000000 <br>fs.inotify.max_user_instances = 1000000<br>fs.inotify.max_user_watches = 1000000 | 全系 | 警告 | 直接为系统设置该参数,不管结果。<br>命令执行成功则成功<br>命令执行失败则警告 | | ||
| 14 | +| 加载内核模块nf_conntrack_ipv4/nf_conntrack | 全系 | 警告 | 直接加载该内核模块,不管结果。<br>命令执行成功为成功<br>命令执行失败则警告 | | ||
| 15 | +| 磁盘空间检查 | 全系 | 失败 | 目标目录的磁盘空间小于80G,则失败 | | ||
| 16 | +| 磁盘性能要求 | 全系 | 失败 | k8s master节点,根目录小数据块读写时间<50ms | | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | +#### 引导节点端口检查 | ||
| 21 | + | ||
| 22 | +| 检查项目 | 适用版本 | 告警级别 | 备注 | | ||
| 23 | +| -------- | -------- | -------- | ------------ | | ||
| 24 | +| 36443 | 全系 | 失败 | 端口不被占用 | | ||
| 25 | +| 40080 | 全系 | 失败 | 端口不被占用 | | ||
| 26 | +| 40443 | 全系 | 失败 | 端口不被占用 | | ||
| 27 | +| 38080 | 全系 | 失败 | 端口不被占用 | | ||
| 28 | + | ||
| 29 | +#### 管理节点到引导节点检查 | ||
| 30 | + | ||
| 31 | +| 检查项目 | 适用版本 | 告警级别 | 备注 | | ||
| 32 | +| -------- | -------- | -------- | ------------------------ | | ||
| 33 | +| 36443 | 全系 | 失败 | 管理节点到引导节点可访问 | | ||
| 34 | +| 40080 | 全系 | 失败 | 管理节点到引导节点可访问 | | ||
| 35 | +| 40443 | 全系 | 失败 | 管理节点到引导节点可访问 | | ||
| 36 | +| 38080 | 全系 | 失败 | 管理节点到引导节点可访问 | | ||
| 37 | + | ||
| 38 | +#### 管理集群内部端口检查 | ||
| 39 | + | ||
| 40 | +| 检查项目 | 适用版本 | 告警级别 | 备注 | | ||
| 41 | +| -------- | -------- | -------- | -------------------------- | | ||
| 42 | +| 30000 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 43 | +| 30001 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 44 | +| 30022 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 45 | +| 30033 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 46 | +| 30024 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 47 | +| 18089 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 48 | +| 30026 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 49 | +| 30988 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 50 | +| 30025 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 51 | +| 30903 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 52 | +| 30909 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 53 | +| 3030 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 54 | +| 30029 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 55 | +| 8080 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 56 | +| 40443 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 57 | +| 6443 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 58 | +| 9090 | v4.0 | 失败 | 端口不被占用,且内部可互访 | | ||
| 59 | + | ||
| 60 | +#### 管理节点到业务集群节点 | ||
| 61 | + | ||
| 62 | +| 检查项目 | 适用版本 | 告警级别 | 备注 | | ||
| 63 | +| -------- | -------- | -------- | ---------------------------------------- | | ||
| 64 | +| 6443 | v4.0 | 失败 | 端口不被占用,且管理集群到业务集群可访问 | | ||
| 65 | +| 30029 | v4.0 | 失败 | 端口不被占用,且管理集群到业务集群可访问 | | ||
| 66 | +| 30909 | v4.0 | 失败 | 端口不被占用,且管理集群到业务集群可访问 | | ||
| 67 | +| 30903 | v4.0 | 失败 | 端口不被占用,且管理集群到业务集群可访问 | | ||
| 68 | +| 3030 | v4.0 | 失败 | 端口不被占用,且管理集群到业务集群可访问 | | ||
| 69 | +| 30019 | v4.0 | 失败 | 端口不被占用,且管理集群到业务集群可访问 | | ||
| 70 | +| 9012 | v4.0 | 失败 | 端口不被占用,且管理集群到业务集群可访问 | | ||
| 71 | + | ||
| 72 | +#### 业务集群到管理集群 | ||
| 73 | + | ||
| 74 | +| 检查项目 | 适用版本 | 告警级别 | 备注 | | ||
| 75 | +| -------- | -------- | -------- | ---------------------------------------- | | ||
| 76 | +| 30000 | v4.0 | 失败 | 端口不被占用,且业务集群到管理集群可访问 | | ||
| 77 | +| 30022 | v4.0 | 失败 | 端口不被占用,且业务集群到管理集群可访问 | | ||
| 78 | + | ||
| @@ -0,0 +1,36 @@ | |||
| 1 | +### 硬件要求 | ||
| 2 | + | ||
| 3 | +> - BKE将机器分为三种类型,引导节点、管理集群、业务集群 | ||
| 4 | + | ||
| 5 | +- 引导节点:作为bke的初始化节点 | ||
| 6 | +- 管理集群:部署kubernetes集群并安装boc产品 | ||
| 7 | +- 业务集群:即客户使用的业务集群,是由管理集群来部署并管理的 | ||
| 8 | + | ||
| 9 | +#### 最小化部署硬件配置 | ||
| 10 | + | ||
| 11 | +| 节点类型 | 节点数量 | CPU | 内存 | 硬盘 | | ||
| 12 | +| -------- | -------- | ---- | ---- | ------------ | | ||
| 13 | +| 引导节点 | 1 | 2 | 4 | 系统盘>=100G | | ||
| 14 | +| 管理集群 | 1 | 8 | 16 | 系统盘>=100G | | ||
| 15 | +| 业务集群 | 1 | 8 | 16 | 系统盘>=100G | | ||
| 16 | + | ||
| 17 | +注:引导节点可以是管理集群的一个节点 | ||
| 18 | + | ||
| 19 | +#### 推荐硬件配置 | ||
| 20 | + | ||
| 21 | +| 节点类型 | 节点数量 | CPU | 内存 | 硬盘 | | ||
| 22 | +| -------- | ------------ | ------------ | ------------ | ---------------------------- | | ||
| 23 | +| 引导节点 | 1 | 2 | 4 | 系统盘>=100G | | ||
| 24 | +| 管理集群 | 3 | 8 | 16 | 系统盘>=100G<br>数据盘>=300G | | ||
| 25 | +| 业务集群 | 实际情况而定 | 实际情况而定 | 实际情况而定 | 实际情况而定 | | ||
| 26 | + | ||
| 27 | + | ||
| 28 | + | ||
| 29 | +### 软件要求 | ||
| 30 | + | ||
| 31 | +| 项目 | 具体要求 | 参考命令(以centos7.6 为例) | | ||
| 32 | +| ---------- | ------------------------------------------- | ------------------------------------------------------------ | | ||
| 33 | +| 操作系 | CentOS Linux 7.6(64-bit) | cat /etc/redhat-release | | ||
| 34 | +| kernel版本 | \>= Kernel 3.10.0-957.10.1.el7.x86_64 | uname -sr | | ||
| 35 | +| ssh | 确保引导节点、管理集群、业务集群能用ssh互连 | 1. 确保添加所有节点时,IP、用户名和密码输入正确。<br/>2. 确保每个节点都有sudo或root权限。<br/> | | ||
| 36 | +| yum | centos系统确保yum指令可用 | 1. 如果是Centos确保拥有yum;其他操作系统类型,确保拥有包管理器<br/> | | ||
| @@ -0,0 +1,52 @@ | |||
| 1 | +### 开放端口 | ||
| 2 | + | ||
| 3 | +| 项目名称 | 部署方式 | 协议 | 内部端口 | 外部端口 | 端口功能 | 端口影响范围 | | ||
| 4 | +| ----------------------- | ---------------- | ----- | -------- | ----------- | -------------------------------------- | ----------------- | | ||
| 5 | +| ssh | 宿主机服务 | SSH | 22 | 22 | SSH通信 | 所有节点 | | ||
| 6 | +| k8s节点开放端口范围 | 无 | 无 | 0 | 30000-32767 | NodePort端口 | k8s 所有节点 | | ||
| 7 | +| kube-apiserver | 静态POD | HTTPS | 6443 | 36443 | k8s api 端口 | k8s master节点 | | ||
| 8 | +| kube-apiserver | 静态POD | HTTP | 8080 | 0 | 非安全端口,默认关闭 | k8s master节点 | | ||
| 9 | +| kube-controller-manager | 静态POD | HTTPS | 10257 | 10257 | metrics安全端口 | k8s master节点 | | ||
| 10 | +| kube-controller-manager | 静态POD | HTTP | 10252 | 10252 | 非安全端口 | k8s master节点 | | ||
| 11 | +| kube-scheduler | 静态POD | HTTPS | 10259 | 10259 | 安全端口 | k8s master节点 | | ||
| 12 | +| kube-scheduler | 静态POD | HTTP | 10251 | 10251 | 非安全端口 | k8s master节点 | | ||
| 13 | +| kubelet | 容器启动 | HTTPS | 10250 | 10250 | AP,安全端口I | k8s 所有节点 | | ||
| 14 | +| kubelet | 容器启动 | HTTP | 10248 | 10248 | /healthz | k8s 所有节点 | | ||
| 15 | +| kubelet | 容器启动 | HTTP | 4194 | 4194 | cadvisior | k8s 所有节点 | | ||
| 16 | +| kube-proxy | Deployment | HTTP | 10256 | 0 | 健康检查端口 | k8s 所有节点 | | ||
| 17 | +| kube-proxy | Deployment | HTTP | 10249 | 0 | 指标端口 | k8s 所有节点 | | ||
| 18 | +| etcd | 静态POD | HTTP | 2380 | 2380 | 集群节点通信 | k8s master节点 | | ||
| 19 | +| etcd | 静态POD | HTTP | 2379 | 2379 | 客户端交互 | k8s master节点 | | ||
| 20 | +| coredns | Deployment | UDP | 53 | 0 | 根域和com域的解析 | k8s 所有节点 | | ||
| 21 | +| coredns | Deployment | UDP | 54 | 0 | 根域解析 | k8s 所有节点 | | ||
| 22 | +| calico | dasmonset | TCP | 9099 | 0 | 健康检查 | k8s 所有节点 | | ||
| 23 | +| calico | dasmonset | TCP | 9100 | 0 | 指标端口 | k8s 所有节点 | | ||
| 24 | +| calico | dasmonset | UDP | 179 | 0 | calico bgp | k8s 所有节点 | | ||
| 25 | +| prometheus | Prometheus CRD | HTTP | 9090 | 30909 | web界面 | k8s 所有节点 | | ||
| 26 | +| alertmanager | Alertmanager CRD | HTTP | 9093 | 30903 | web界面 | k8s 所有节点 | | ||
| 27 | +| node exporter | Daemonset | HTTP | 9100 | 9100 | 指标端口 | 所有节点 | | ||
| 28 | +| grafana | Deployment | HTTP | 3000 | 30902 | web界面 | k8s 所有节点 | | ||
| 29 | +| kibana | Deployment | HTTP | 5601 | 31065 | web界面 | k8s 所有节点 | | ||
| 30 | +| elasticsearch | statefulset | TCP | 9200 | 30029 | db | k8s 所有节点 | | ||
| 31 | +| elasticsearch | statefulset | TCP | 9300 | 30039 | transport | k8s 所有节点 | | ||
| 32 | +| fabric | daemonset | TCP | 9013 | 9013 | fabric-controller api 端口 | 所有节点 | | ||
| 33 | +| fabric ryu-controller | daemonset | TCP | 9016 | 9016 | fabric ryu-controller api 端口 | 所有节点 | | ||
| 34 | +| fabric webhook | daemonset | TCP | 9443 | 0 | fabric webhook 端口 | 所有节点 | | ||
| 35 | +| fabric ryu-controller | daemonset | TCP | 6633 | 6633 | fabric ryu-controller openflow通信端口 | 所有节点 | | ||
| 36 | +| beyondlet | daemonset | HTTP | 9012 | 9012 | api服务 | k8s 所有节点 | | ||
| 37 | +| plumber | deployment | HTTP | 9019 | 30019 | api服务 | | | ||
| 38 | +| beyondELB | deployment | TCP | 80 | 80 | nginx端口 | ingress-nginx节点 | | ||
| 39 | +| beyondELB | deployment | TCP | 443 | 443 | nginx端口 | ingress-nginx节点 | | ||
| 40 | +| beyondELB | deployment | TCP | 8443 | 8443 | webhook端口 | ingress-nginx节点 | | ||
| 41 | +| beyondELB | deployment | HTTP | 10254 | 0 | 健康检查端口 | ingress-nginx节点 | | ||
| 42 | +| securityCron | deployment | HTTP | 8081 | 30018 | showstatus | k8s 所有节点 | | ||
| 43 | +| securityCron | deployment | HTTP | 8000 | 0 | readyz检查端口 | 无 | | ||
| 44 | +| securityCron | deployment | HTTP | 8080 | 0 | controller端口 | 无 | | ||
| 45 | +| beyondac | Deployment | HTTP | 9015 | 0 | webhook端口 | 无 | | ||
| 46 | +| beyondac | Deployment | HTTP | 8081 | 0 | metrics端口 | 无 | | ||
| 47 | +| konk-k8s | containerd | HTTPS | 6443 | 36443 | k8s api 端口 | 引导节点 | | ||
| 48 | +| yum源端口 | containerd | HTTP | 443 | 40443 | yum源端口 | 引导节点 | | ||
| 49 | +| charts服务端口 | containerd | HTTP | 8080 | 38080 | charts服务端口 | 引导节点 | | ||
| 50 | +| nfsserver | containerd | TCP | 2049 | 2049 | 挂载服务端口 | 引导节点 | | ||
| 51 | +| ntpserver | proc | UDP | 50 | 123 | 时间服务器端口 | 引导节点 | | ||
| 52 | + | ||
| @@ -0,0 +1,230 @@ | |||
| 1 | +### 场景模拟 | ||
| 2 | + | ||
| 3 | +- 通过一个客户场景,来模拟一下Konk的使用流程 | ||
| 4 | + | ||
| 5 | +```shell | ||
| 6 | +[20230801] [事件] 某客户提供了18台服务器,用于部署boc管理平台及公司使用的业务集群 | ||
| 7 | +[20230801] [规划] 18台服务器三台用于部署高可用的portal集群,15台用于部署业务集群 | ||
| 8 | +[20230801] [实施] 将预检程序及额外部署要求给客户,让客户在任意一台服务器上执行预检程序,并通过交流检查结果,对集群进行调整 | ||
| 9 | +[20230801] [传输] 将bke.tar.gz打包文件传输到客户现场,或者用U盘带过去 | ||
| 10 | +[20230802] [入住] 实施人员入驻现场,将bke.tar.gz包放置到选定的引导节点,并执行解压 | ||
| 11 | +[20230802] [实施] 提前准备好portal集群部署yaml,执行bke init -f bkecluster.yaml完成portal一键部署 | ||
| 12 | +[20230802] [检查] 等待若干时间后,检查portal集群是否监控及portal平台是否可以正常登录 | ||
| 13 | +[20230802] [业务] 登录portal,在portal界面完成业务集群的部署及纳管 | ||
| 14 | +[20230802] [交付] 将boc平台交付给客户使用 | ||
| 15 | +``` | ||
| 16 | + | ||
| 17 | +### 在线部署 | ||
| 18 | + | ||
| 19 | +> - BKE前期部署模式以离线部署为主,但是离线部署的弊端是每次部署一个K8s集群需要提前制作好离线部署包,这个实在是太麻烦了 | ||
| 20 | +> - 对于任何集群部署工具来说,每每想到部署个k8s集群还忒提前准备一系列离线包就会头疼的放弃该产品,转而用kubeadm | ||
| 21 | +> - 所以设计并开发BKE在线部署模式,受离线部署的影响,BKE的在线部署模式是基于离线的基础之上实现的。 | ||
| 22 | + | ||
| 23 | +#### 部署模式 | ||
| 24 | + | ||
| 25 | +> 对于当前的集群部署,有一些依赖组件是必须存在的,比如containerd、kubectl、etcdctl、docker-ce源l等,必须提供一个下载这些资源的地方,对此设计了两种存储 | ||
| 26 | +> | ||
| 27 | +> 第一种,将这些文件打包进一个镜像中,从镜像中获取 | ||
| 28 | +> | ||
| 29 | +> 第二种,提供下载源,从下载源中获取 | ||
| 30 | + | ||
| 31 | +##### 部署模式一 | ||
| 32 | + | ||
| 33 | +```shell | ||
| 34 | +# 必要条件 | ||
| 35 | +# 提前构建一个镜像,上传到公网仓库,该镜像中包含containerd、rpm、etcdctl等包 参考<<制作在线依赖镜像>>篇 | ||
| 36 | + | ||
| 37 | +# 将bke 二进制文件 上传到目标主机, /usr/bin目录下 | ||
| 38 | +$ upload bke --> bootstarp host /usr/bin | ||
| 39 | +# 使用如下指令初始化引导节点 | ||
| 40 | +$ bke init --otherRepo registry.example.com/bke/demo:v0.3 | ||
| 41 | +# 初始化完成后,修改/bke/cluster/1master.yaml部署集群,注意公网是没有fabric镜像的要改成calico模式部署 | ||
| 42 | +# 如果只是想要一个k8s集群的话,将addons中的bocoperator部署移除掉 | ||
| 43 | +$ bke cluster create -f /bke/cluster/1master.yaml | ||
| 44 | +``` | ||
| 45 | + | ||
| 46 | +##### 部署模式二 | ||
| 47 | + | ||
| 48 | +```shell | ||
| 49 | +# 必要条件 | ||
| 50 | +# 该模式和模式一是相同的,同样需要构建镜像上传到镜像仓库,唯一的不同是该模式是部署到自己搭建的私有镜像仓库,非公网仓库 | ||
| 51 | +# 从私有仓库下载镜像涉及到证书、https/http、用户名密码等等,由于此种原因BKE并不能支持任意的镜像仓库下载(看需求有客户需要在支持) | ||
| 52 | +# BKE 仅仅支持一种镜像仓库,那就是bke start image 启动的镜像仓库,因为这个证书bke/cluster-api都内置了,下镜像不会有任何阻塞 | ||
| 53 | + | ||
| 54 | +# 初始化命令和模式一部署命令一致,区别是这里的镜像仓库要用IP | ||
| 55 | +$ bke init --otherRepo 192.0.2.10:40443/kubernetes/demo:v0.3 | ||
| 56 | +# 修改/bke/cluster/1master.yaml,内网仓库就可以用fabric | ||
| 57 | +$ bke cluster create -f /bke/cluster/1master.yaml | ||
| 58 | +``` | ||
| 59 | + | ||
| 60 | +##### 部署模式三 | ||
| 61 | + | ||
| 62 | +```shell | ||
| 63 | +# 必要条件 | ||
| 64 | +# 该模式不需要提前构建源镜像,但是需要提前准备好一个rpm的源仓库,即bke start rpm 启动的仓库 | ||
| 65 | +# 在该仓库中已经存在了需要的contaienrd / kubectl / rpm包等资源 | ||
| 66 | +# 然后使用如下命令初始化引导节点,注意使用该模式部署出来的集群,会使用这个源做为主机源地址 | ||
| 67 | + | ||
| 68 | +# 初始引导节点,注意这里的 --otherRepo指向的是镜像仓库并没有指向具体的镜像 --otherSource 需要http://前缀 | ||
| 69 | +$ bke init --otherRepo registry.example.com/bke --otherSource http://192.0.2.10:40080 | ||
| 70 | +# 修改/bke/cluster/1master.yaml,部署集群 | ||
| 71 | +$ bke cluster create -f /bke/cluster/1master.yaml | ||
| 72 | +``` | ||
| 73 | + | ||
| 74 | +##### 部署模式四(不支持) | ||
| 75 | + | ||
| 76 | +```shell | ||
| 77 | +# 使用公网的开源的rpm源仓库是不支持的,因为我们的自建的仓库除了承担rpm源包安装的任务外,还需要支持诸如kubectl、etcdctl等依赖工具的下载,咱不支持公网源 | ||
| 78 | +# 假设服务器是公网的,主机已经提前安装好了docker服务,支持待定 | ||
| 79 | +``` | ||
| 80 | + | ||
| 81 | + | ||
| 82 | + | ||
| 83 | +### 离线部署 | ||
| 84 | + | ||
| 85 | +> 在离线部署情况下,要求引导节点的工作目录必须大于等于50G,注意如果该压缩包中是多架构的bke,它会存在bke_amd64 / bke_arm64两个文件,请根据系统架构使用对应文件 | ||
| 86 | +> | ||
| 87 | +> 部署方案一,属于最简洁常用的部署方案,将压缩包解压到/bke目录中,并使用默认的工作目录/bke | ||
| 88 | +> | ||
| 89 | +> 部署方案二,属于一些自定义需求的部署方案,下边会详细介绍使用方法 | ||
| 90 | +> | ||
| 91 | +> 部署方案三,在默认情况下bke在引导节点启动了一个镜像仓库、yum源仓库、chart仓库、nfs仓库、ntpserver,有些特殊需求要将该资源分开,这个便如何将服务迁移 | ||
| 92 | + | ||
| 93 | +#### 部署方案一 | ||
| 94 | + | ||
| 95 | +- 第一步:获取bke.tar.gz文件,并在引导节点解压 | ||
| 96 | + | ||
| 97 | +```shell | ||
| 98 | +# 该压缩包中包含全量的镜像文件,体积较大 | ||
| 99 | +$ tar zxvf bke.tar.gz -C / | ||
| 100 | +``` | ||
| 101 | + | ||
| 102 | +- 第二步:在引导节点执行如下指令 | ||
| 103 | + | ||
| 104 | +```shell | ||
| 105 | +# 关闭防火墙 | ||
| 106 | +$ systemctl stop firewalld && systemctl disable firewalld | ||
| 107 | +# 初始化引导节点环境并设置ntp服务器,ntp服务器修改参考[引导节点篇] | ||
| 108 | +$ bke init [--ntpServer cn.pool.ntp.org:123] | ||
| 109 | +# 生成配置文件在${BKE_WORKSAPCE}/cluster(默认/bke/cluster)目录下 | ||
| 110 | +$ ls /bke/cluster | ||
| 111 | +# 根据需求修改配置文件,配置文件修改参考[配置文件篇] | ||
| 112 | +# 执行集群部署 | ||
| 113 | +$ bke cluster create -f /bke/cluster/bkecluster.yaml | ||
| 114 | +``` | ||
| 115 | + | ||
| 116 | +- 一条指令完成集群部署,适用于提前准备好配置文件 | ||
| 117 | + | ||
| 118 | +```shell | ||
| 119 | +$ bke init -f /bke/cluster/bkecluster.yaml | ||
| 120 | +``` | ||
| 121 | + | ||
| 122 | +#### 部署方案二 | ||
| 123 | + | ||
| 124 | +- 情况一:根目录磁盘空间不足,想使用额外的磁盘 | ||
| 125 | + | ||
| 126 | +```shell | ||
| 127 | +# 创建/bke目录,并将其挂载到目标磁盘 | ||
| 128 | +$ mkdir /bke | ||
| 129 | +$ mount /dev/sdc /bke | ||
| 130 | +# 其余过程就和使用部署方案一一样 | ||
| 131 | +``` | ||
| 132 | + | ||
| 133 | +- 情况二:不想使用/bke 作为工作目录,想使用其他目录作为工作目录 | ||
| 134 | + | ||
| 135 | +```shell | ||
| 136 | +$ mkdir /data | ||
| 137 | +$ tar zxvf bke.tar.gz -C /data | ||
| 138 | +# 注意解压到非根目录 bke二进制文件会在/data/usr/bin下,请将其挪到/usr/bin下 | ||
| 139 | +$ mv /data/usr/bin/bke /usr/bin | ||
| 140 | +# 设置BKE_WORKSPACE环境变量,注意这个环境变量的结尾是bke并不是/data | ||
| 141 | +$ export BKE_WORKSPACE=/data/bke | ||
| 142 | +$ bke init --runtime docker | ||
| 143 | +# 该环境变量的设置,另个一个注意点容易忽略,设置的环境变量往往是在当前会话生效 | ||
| 144 | +# 当你重新连接该客户端环境变量就失效了,而此时你可能已经忘了,因此执行bke init 会出现未知错误 | ||
| 145 | +# 所以推荐如下使用方法 | ||
| 146 | +$ BKE_WORKSPACE=/data/bke bke init --runtime docker | ||
| 147 | +``` | ||
| 148 | + | ||
| 149 | +- 完成上述操作,就和`方案一`使用bke的过程一样了 | ||
| 150 | + | ||
| 151 | +#### 部署方案三 | ||
| 152 | + | ||
| 153 | +> 这些所有的自定义配置,最终都会体现到bkecluster这个crd文件上,当你要特殊的配置的时候,要同步修改该配置文件 | ||
| 154 | + | ||
| 155 | +- 自定义的镜像仓库,boc暂不支持自定义镜像仓库域名及端口,固定为`repo.example.com:40443` | ||
| 156 | + | ||
| 157 | +```shell | ||
| 158 | +# 第一种情况:使用客户提供的镜像仓库,需要将镜像全量同步到客户的仓库中,并在bkecluster.yaml中指定客户仓库即可 | ||
| 159 | +# 第二种情况:镜像仓库迁移,首先将/bke/mount下数据迁移到指定节点,然后执行如下命令将会在目标节点启动一个新的镜像仓库 | ||
| 160 | +# 注意 迁移镜像仓库,所有节点 repo.example.com域名指向的IP要变更 | ||
| 161 | +$ bke start image [--image registry:2.8.1] [--data /bke/mount/image_registry] # 该指令将启动一个带有tls证书的镜像仓库 | ||
| 162 | +$ bke remove image # 移除仓库 | ||
| 163 | +``` | ||
| 164 | + | ||
| 165 | +- 自定义的chart仓库 | ||
| 166 | + | ||
| 167 | +```shell | ||
| 168 | +# 将/bke/mount下数据迁移到目标节点 | ||
| 169 | +$ bke start chart [--image chartsum:0.15.0] [--data /bke/mount/chartsum] # 启动一个chart仓库 | ||
| 170 | +$ bke remove image # 移除仓库 | ||
| 171 | +``` | ||
| 172 | + | ||
| 173 | +- 自定义yum源仓库 | ||
| 174 | + | ||
| 175 | +```shell | ||
| 176 | +# 该项配置体现在bkecluster的httpRepo字段 | ||
| 177 | +# 将/bke/mount下数据文件迁移到目标节点 | ||
| 178 | +$ bke start yum # 启动一个yum源仓库 | ||
| 179 | +$ bke remove yum # 移除仓库 | ||
| 180 | +``` | ||
| 181 | + | ||
| 182 | +- 自定义nfs仓库 | ||
| 183 | + | ||
| 184 | +```shell | ||
| 185 | +# 将/bke/mount下数据迁移到目标节点 | ||
| 186 | +$ bke start nfs # 启动一个nfsserver | ||
| 187 | +$ bke remove nfs # 删除服务 | ||
| 188 | +``` | ||
| 189 | + | ||
| 190 | +- 自定义ntpserver | ||
| 191 | + | ||
| 192 | +```shell | ||
| 193 | +$ bke start ntpserver # 启动一个ntpserver | ||
| 194 | +$ bke remove ntpserver # 删除服务 | ||
| 195 | +``` | ||
| 196 | + | ||
| 197 | +#### 部署方案四 | ||
| 198 | + | ||
| 199 | +> - 有时候引导节点经过多次重复初始化,会存在残留的目录数据,影响本地的初始化结果,当出现这种情况时候,可使用如下命令初始化 | ||
| 200 | + | ||
| 201 | +```shell | ||
| 202 | +# 重置节点服务,然后重新初始化 | ||
| 203 | +$ bke reset --mount && bke init | ||
| 204 | +``` | ||
| 205 | + | ||
| 206 | + | ||
| 207 | + | ||
| 208 | +### 增量包部署 | ||
| 209 | + | ||
| 210 | +- 第一步:将增量包放到到引导节点 `bke-patch-patch4.0-amd64-20230428170229.tar.gz` | ||
| 211 | +- 第二步:执行解压命令,可以将该包解压到任意目录,注意别覆盖现场使用中的bke目录 | ||
| 212 | + | ||
| 213 | +```shell | ||
| 214 | +$ makde /tmp/v2 | ||
| 215 | +$ tar zxvf bke-patch-patch4.0-amd64-20230428170229.tar.gz -C /tmp/v2 | ||
| 216 | +$ tree -L 2 /tmp/v2/ | ||
| 217 | +/tmp/v2/ | ||
| 218 | +└── bke-patch4.0 | ||
| 219 | + ├── manifests.yaml | ||
| 220 | + └── volumes | ||
| 221 | +``` | ||
| 222 | + | ||
| 223 | +- 第三步:执行`bke registry patch --source /tmp/v2/patch4.0 --target 127.0.0.1:40443` 进行镜像仓库同步 | ||
| 224 | + | ||
| 225 | +```shell | ||
| 226 | +$ bke registry patch --source /tmp/v2/patch4.0 --target 127.0.0.1:40443 | ||
| 227 | +``` | ||
| 228 | + | ||
| 229 | +- 第四步:根据部署文档将指定文件增量到指定目录 | ||
| 230 | +- 第五步:执行部署文档其他任务要求 | ||
| @@ -0,0 +1,618 @@ | |||
| 1 | +### 配置文件 | ||
| 2 | + | ||
| 3 | +> bke部署集群有一个唯一的配置文件,所有的后续部署均围绕该配置文件进行,部署文件的详细信息如下 | ||
| 4 | + | ||
| 5 | +#### 配置文件标准用法 | ||
| 6 | + | ||
| 7 | +- 该配置文件是k8s中的crd文件 | ||
| 8 | + | ||
| 9 | + > 当执行完`bke init`后在`${BKE_WORKSPACE}/cluster`(默认`/bke/cluster`)目录下会生成该配置文件 | ||
| 10 | + | ||
| 11 | + > 执行`bke config`在当前目录下生成该配置文件 | ||
| 12 | + | ||
| 13 | +- 如下介绍一下配置文件的详细信息 | ||
| 14 | + | ||
| 15 | +```yaml | ||
| 16 | +apiVersion: bke.bocloud.com/v1beta1 | ||
| 17 | +kind: BKECluster | ||
| 18 | +metadata: | ||
| 19 | + name: bke-cluster | ||
| 20 | + namespace: bke-cluster | ||
| 21 | + # 所有注释不存在则都按默认值处理 | ||
| 22 | + annotations: | ||
| 23 | + # 设置agent监听的集群 默认current | ||
| 24 | + # 可选值 current或bkecluster | ||
| 25 | + # 设置为bkecluster时会在当前配置的集群创建之后转移agent监听到新集群。 | ||
| 26 | + # 一旦转移将失去对该BKECluster CRD所指集群的控制,即删除扩缩容等操作都将失效 | ||
| 27 | + bke.bocloud.com/bkeagent-listener: current | ||
| 28 | + # 集群类型,默认空 | ||
| 29 | + # 部署新集群为"",纳管老的bocloud部署的集群值为bocloud,纳管其他来源的k8s用other | ||
| 30 | + bke.bocloud.com/cluster-from: "" | ||
| 31 | + # 是否开启深度清理节点,默认为 true | ||
| 32 | + # 除移除k8s相关,还会额外清理容器运行时(docker containerd) | ||
| 33 | + bke.bocloud.com/deep-restore-node: "true" | ||
| 34 | + # 删除bc时是否忽略删除目标集群,默认为 true | ||
| 35 | + # 若为true则删除bc时不会删除目标集群,只会删除当前集群中的各种CR | ||
| 36 | + # 若为false则删除bc时会删除目标集群 | ||
| 37 | + bke.bocloud.com/ignore-target-cluster-delete: "true" | ||
| 38 | + # 删除bc时是否忽略删除bc所在的namespace,默认为 true | ||
| 39 | + # 若为true则删除bc时不会删除bc所在的namespace | ||
| 40 | + # 若为false则删除bc时会删除bc所在的namespace | ||
| 41 | + # 若检测到该namespace下还有其他bc,即使设置为false也不会删除该namespace | ||
| 42 | + bke.bocloud.com/ignore-namespace-delete: "true" | ||
| 43 | + # 节点引导超时时间,默认10m | ||
| 44 | + # 该参数可影响环境检查的超时时间,以及单节点启动k8s组件的时间 | ||
| 45 | + # 在网络条件不好时,可适当调高该值 | ||
| 46 | + bke.bocloud.com/node-boot-wait-timeout: "10m" | ||
| 47 | + # 节点预约删除,节点删除是个危险的动作故增加此注释做二次确认,默认无 | ||
| 48 | + # 删除节点时除从spec中将节点删除,还需将要删除的节点ip填入,多个ip之间使用‘,’分割 | ||
| 49 | + # 两步操作少之其一都不会触发节点删除 | ||
| 50 | + bke.bocloud.com/appointment-deleted-nodes: "" | ||
| 51 | + # 节点预约安装 | ||
| 52 | + # 安装节点时,从spec中将节点信息填入,并在该注解中填入了节点ip,多个ip之间使用‘,’分割 | ||
| 53 | + # 将不会对注解中存在ip的节点进行安装,直至将相关ip从注解中移除后才会安装 | ||
| 54 | + bke.bocloud.com/appointment-add-nodes: "" | ||
| 55 | + # master节点是否可调度,默认false | ||
| 56 | + # 设置为false等同于在master节点加入集群后使用 kubectl conrdon node ** | ||
| 57 | + bke.bocloud.com/master-schedulable: "false" | ||
| 58 | +spec: | ||
| 59 | + # 可选 负载均衡地址,需要配置负载均衡器时再填 | ||
| 60 | + controlPlaneEndpoint: # 详情见下方章节 负载均衡 | ||
| 61 | + host: "HA IP" # 启动负载均衡器时,VIP 将设置为该值,且需要与Node列表中各个node IP同网段 | ||
| 62 | + port: 36443 # 可选 int32类型 如只设置host没有port默认设置为36443 | ||
| 63 | + pasue: false # 此值为true会暂停集群操作,无法暂停正在运行的操作,eg: 正在扩容,扩容结束后不再进行其他操作 | ||
| 64 | + dryRun: false # 此值为true则仅做环境检查不安装k8s集群 | ||
| 65 | + reset: false # 此值为true则会删除bc,等同于kubectl delete bc | ||
| 66 | + # kubernetes集群配置 | ||
| 67 | + # 各个组件的镜像名称、镜像版本、启动参数配置(组件本身存在默认启动参数,配置的为额外的启动参数) | ||
| 68 | + clusterConfig: | ||
| 69 | + cluster: | ||
| 70 | + apiServer: # 详情见下方章节 kubernetes组件配置-kube-apiserver | ||
| 71 | + port: "6443" | ||
| 72 | + controllerManager: # 详情见下方章节 kubernetes组件配置-kube-controller-manager | ||
| 73 | + etcd: # 详情见下方章节 kubernetes组件配置-etcd | ||
| 74 | + dataDir: /var/lib/etcd | ||
| 75 | + scheduler: # 详情见下方章节 kubernetes组件配置-kube-scheduler | ||
| 76 | + extraVolumes: | ||
| 77 | + - hostPath: /host/exam | ||
| 78 | + mountPath: /host/exam | ||
| 79 | + name: example | ||
| 80 | + pathType: Directory | ||
| 81 | + readOnly: true | ||
| 82 | + kubelet: # 详情见下方章节 kubernetes组件配置-kubelet | ||
| 83 | + manifestsDir: /etc/kubernetes/manifests | ||
| 84 | + # 可选,配置kubelet 数据目录,此处所示为默认配置,没有填写时将会自动设置 | ||
| 85 | + # extraVolumes中配置一条name为kubelet-root-dir的才会生效否则会认为是普通的额外挂载 | ||
| 86 | + extraVolumes: | ||
| 87 | + - name: kubelet-root-dir | ||
| 88 | + hostPath: /var/lib/kubelet | ||
| 89 | + # 配置容器运行时 | ||
| 90 | + containerRuntime: # 详情见下方章节 容器运行时配置 | ||
| 91 | + # 设置为containerd时请在下方customExtra字段中填写containerd版本,docker不用填写 | ||
| 92 | + cri: containerd # 可选docker、containerd,默认containerd | ||
| 93 | + runtime: runc # 可选 runc、richrunc、kata,默认runc | ||
| 94 | + # docker、containerd配置文件额外参数 | ||
| 95 | + # ps: 由于docker的containerd的配置文件格式不同,此处的key,value为定制参数 | ||
| 96 | + param: | ||
| 97 | + # 可选,CRI数据保存目录 | ||
| 98 | + # cri为containerd时默认为/var/lib/containerd | ||
| 99 | + # cri为docker时默认为/var/lib/docker | ||
| 100 | + # 没有填写时将会自动设置 | ||
| 101 | + data-root: /var/lib/containerd | ||
| 102 | + # 可选,cgroup驱动 | ||
| 103 | + # 默认为systemd,在麒麟V10 amr64系统上使用docker-engine时,将会强制使用cgroupfs | ||
| 104 | + cgroupDriver: systemd | ||
| 105 | + # 配置kubernetes版本,当各个k8s组件不配置版本时以此为准目前支持(v1.21.1、v1.23.17、v1.25.6)的集群部署 | ||
| 106 | + # 可选 默认v1.25.6,支持1.21-1.29 | ||
| 107 | + kubernetesVersion: v1.25.6 | ||
| 108 | + # k8s证书在主机上的存放目录 | ||
| 109 | + # 可选 默认/etc/kubernetes/pki | ||
| 110 | + certificatesDir: /etc/kubernetes/pki | ||
| 111 | + # 集群网络 | ||
| 112 | + networking: # 详情见下方章节 网络配置 | ||
| 113 | + dnsDomain: cluster.local | ||
| 114 | + podSubnet: 10.250.0.0/16 | ||
| 115 | + serviceSubnet: 10.96.0.0/12 | ||
| 116 | + # 可选 公网环境可采用公网ntpServer | ||
| 117 | + # 内网环境如果提供则填写上ntpServer | ||
| 118 | + # 默认从 configmap cluster-system / bke-config 中读取,详情见引导节点章节 | ||
| 119 | + ntpServer: cn.pool.ntp.org:123 | ||
| 120 | + # kubernetes集群部署所有的镜像来源于 repo.example.com:40443/kubernetes | ||
| 121 | + imageRepo: # 详情见下方章节 镜像仓库 | ||
| 122 | + domain: repo.example.com | ||
| 123 | + port: "40443" | ||
| 124 | + prefix: kubernetes | ||
| 125 | + # 该http源(yum或apt源)会配置到所有的节点 | ||
| 126 | + httpRepo: # 详情见下方章节 yum仓库 | ||
| 127 | + domain: repo.example.com | ||
| 128 | + port: "40080" | ||
| 129 | + prefix: "" | ||
| 130 | + # 配置所有节点的详细信息 | ||
| 131 | + nodes: # 详情见下方章节 集群节点配置 | ||
| 132 | + - hostname: master-1 # 很明显三个master会自动组建高可用k8s集群 | ||
| 133 | + ip: 172.100.200.10 | ||
| 134 | + username: root # 用户名密码是必须的,且保证ssh连接是通的,使用非root用户需要具有sudo免密权限 | ||
| 135 | + password: <ssh-password> # 密码会被自动加密 | ||
| 136 | + port: "22" | ||
| 137 | + # 配置该节点的角色,目前只支持master和etcd绑定在一个节点配置 | ||
| 138 | + # 支持的角色类型 (master、node、master/node、etcd) | ||
| 139 | + # 注意使用mater和node同节点的角色是,需填写为 "master/node"形式,不可以分开填写 | ||
| 140 | + role: | ||
| 141 | + - master/node | ||
| 142 | + - etcd | ||
| 143 | + - hostname: master-2 | ||
| 144 | + ip: 172.100.200.11 | ||
| 145 | + username: root | ||
| 146 | + password: <ssh-password> | ||
| 147 | + port: "22" | ||
| 148 | + role: | ||
| 149 | + - master | ||
| 150 | + - etcd | ||
| 151 | + - hostname: master-3 | ||
| 152 | + ip: 172.100.200.12 | ||
| 153 | + username: root | ||
| 154 | + password: <ssh-password> | ||
| 155 | + port: "22" | ||
| 156 | + role: | ||
| 157 | + - master | ||
| 158 | + - etcd | ||
| 159 | + - hostname: worker-1 | ||
| 160 | + ip: 172.100.200.13 | ||
| 161 | + username: root | ||
| 162 | + password: <ssh-password> | ||
| 163 | + port: "22" | ||
| 164 | + role: | ||
| 165 | + - node | ||
| 166 | + - hostname: worker-2 | ||
| 167 | + ip: 172.100.200.14 | ||
| 168 | + username: root | ||
| 169 | + password: <ssh-password> | ||
| 170 | + port: "22" | ||
| 171 | + role: | ||
| 172 | + - node | ||
| 173 | + - hostname: worker-3 | ||
| 174 | + ip: 172.100.200.15 | ||
| 175 | + username: root | ||
| 176 | + password: <ssh-password> | ||
| 177 | + port: "22" | ||
| 178 | + role: | ||
| 179 | + - node | ||
| 180 | + # Kubernetes生态组件,当k8s集群启动完成后将会按照顺序部署如下组件 | ||
| 181 | + addons: | ||
| 182 | + # 安装 kubeproxy时 version跟随spec中的k8s版本, | ||
| 183 | + # 如上述填写 "kubernetesVersion: v1.25.6",此处version也填写 v1.25.6 | ||
| 184 | + - name: kubeproxy | ||
| 185 | + version: v1.25.6 | ||
| 186 | + # 阻塞,即等待该组件启动完成后才会部署下边组件 | ||
| 187 | + # 不填写时 默认为false | ||
| 188 | + block: true | ||
| 189 | + param: # 部署该组件需要的参数 | ||
| 190 | + clusterNetworkMode: calico | ||
| 191 | + - name: calico | ||
| 192 | + param: | ||
| 193 | + calicoMode: bgp | ||
| 194 | + version: v3.25.0 | ||
| 195 | + - name: coredns | ||
| 196 | + version: v1.10.1 | ||
| 197 | + customExtra: | ||
| 198 | + # contaienrd是必须的,且value需要符合命名规则^containerd-([a-z0-9\\.]+)-([a-z0-9]+)-([a-z0-9\\.\\{\\}]+).tar.gz$ | ||
| 199 | + containerd: containerd-1.6.16-linux-{.arch}.tar.gz | ||
| 200 | + # 可选,bkeagent-launcher-image纳管集群时使用的bkeagent-lancher镜像,未填写时将使用imageRepo中的镜像仓库生成镜像获取地址 | ||
| 201 | + bkeagent-launcher-image: "repo.example.com:40443/kubernetes/bkeagent-launcher:latest" | ||
| 202 | + # 可选,设置master vip的route ID,设置负载均衡器后,且未填写该值,控制器将随机生成1-255的数字填写 | ||
| 203 | + masterVirtualRouterId: '60' | ||
| 204 | + # 可选,设置beyondELB vip的route ID,beyondELB 组件中设置lbvip后,且未填写该值,控制器将随机生成1-255的数字填写 | ||
| 205 | + ingressVirtualRouterId: '200' | ||
| 206 | + # 可选 设置环境初始化额外执行脚本,具体见下方环境初始化脚本 | ||
| 207 | + envExtraExecScripts: "install-lxcfs.sh,install-nfsutils.sh,install-etcdctl.sh,install-helm.sh,install-calicoctl.sh,update-runc.sh" | ||
| 208 | +``` | ||
| 209 | + | ||
| 210 | + | ||
| 211 | + | ||
| 212 | +#### 配置文件高级用法 | ||
| 213 | + | ||
| 214 | +#### 负载均衡 | ||
| 215 | + | ||
| 216 | +- 填写VIP地址,在部署集群时会启动keepalived+haproxy保证集群的高可用 | ||
| 217 | +- 目前host需要和节点IP处于同一网段 | ||
| 218 | +- 当配置多Master,但不配置loadBalancer时,会选取第一个k8s master节点作为其他worker节点的连接地址 | ||
| 219 | + | ||
| 220 | +```yaml | ||
| 221 | +spec: | ||
| 222 | + controlPlaneEndpoint: # 可选 | ||
| 223 | + host: 192.0.2.100 | ||
| 224 | + port: 36443 # int32类型 可选 默认36443 | ||
| 225 | +spec: | ||
| 226 | + clusterConfig: | ||
| 227 | + customExtra: | ||
| 228 | + # 可选,设置master vip的route ID,设置负载均衡器后,且未填写该值,控制器将随机生成1-255的数字填写 | ||
| 229 | + masterVirtualRouterId: '60' | ||
| 230 | +``` | ||
| 231 | + | ||
| 232 | +#### 集群节点配置 | ||
| 233 | + | ||
| 234 | +- 在nodes下三个节点的角色配置上 master 和 etcd 便是三主k8s集群 | ||
| 235 | +- 如果想要集群k8s master高可用 loadBalancer是必须的 | ||
| 236 | + | ||
| 237 | +```yaml | ||
| 238 | +# spec.clusterConfig: | ||
| 239 | +nodes: | ||
| 240 | + # 配置该节点的角色,目前只支持master和etcd绑定在一个节点配置 | ||
| 241 | + # 支持的角色类型 (master、node、master/node、etcd) | ||
| 242 | + # 注意使用mater和node同节点的角色是,需填写为 "master/node"形式,不可以分开填写 | ||
| 243 | + # 使用master/node角色不会给该master节点设置污点,单独使用master角色会设置污点 | ||
| 244 | + - role: | ||
| 245 | + - master/node | ||
| 246 | + - etcd | ||
| 247 | + ip: 172.100.200.10 | ||
| 248 | + port: "22" # 可选默认22 | ||
| 249 | + username: root # 用户名密码是必须的,且保证ssh连接是通的,所使用用户需要具有sudo权限 | ||
| 250 | + password: <ssh-password> # 密码会被自动加密 | ||
| 251 | + hostname: master-1 # 会为节点设置成该hostname | ||
| 252 | + # 很明显三个master会自动组建高可用k8s集群 | ||
| 253 | + - role: | ||
| 254 | + - master | ||
| 255 | + - etcd | ||
| 256 | + ip: 172.100.200.11 | ||
| 257 | + port: "22" | ||
| 258 | + username: root | ||
| 259 | + password: <ssh-password> | ||
| 260 | + hostname: master-2 | ||
| 261 | + - role: | ||
| 262 | + - master | ||
| 263 | + - etcd | ||
| 264 | + ip: 172.100.200.12 | ||
| 265 | + port: "22" | ||
| 266 | + username: root | ||
| 267 | + password: <ssh-password> | ||
| 268 | + hostname: master-3 | ||
| 269 | +``` | ||
| 270 | + | ||
| 271 | +- 该配置文件中,节点列表上限为2048,如果有更多的节点需要存储到同名的configmap中,可以认为该configmap就是bkecluster的外置扩展,共享调谐逻辑 | ||
| 272 | + | ||
| 273 | +```yaml | ||
| 274 | +$ kubectl get configmap bke-cluster -n bke-cluster -o yaml | ||
| 275 | +apiVersion: v1 | ||
| 276 | +data: | ||
| 277 | + nodes: |2 | ||
| 278 | + | ||
| 279 | + [{ | ||
| 280 | + "role": ["master", "etcd"], | ||
| 281 | + "ip": "172.100.200.11", | ||
| 282 | + "port": "22", | ||
| 283 | + "username": "root", | ||
| 284 | + "password": "<ssh-password>", | ||
| 285 | + "hostname": "worker-2" | ||
| 286 | + }, | ||
| 287 | + { | ||
| 288 | + "role": ["node"], | ||
| 289 | + "ip": "172.100.200.12", | ||
| 290 | + "port": "22", | ||
| 291 | + "username": "root", | ||
| 292 | + "password": "<ssh-password>", | ||
| 293 | + "hostname": "worker-3" | ||
| 294 | + }] | ||
| 295 | +kind: ConfigMap | ||
| 296 | +metadata: | ||
| 297 | + creationTimestamp: "2022-12-26T09:14:24Z" | ||
| 298 | + name: bke-cluster | ||
| 299 | + namespace: default | ||
| 300 | + resourceVersion: "11027428" | ||
| 301 | + uid: 0f7e2c3b-77b8-40dc-9fa1-404f8cde175d | ||
| 302 | +``` | ||
| 303 | + | ||
| 304 | + | ||
| 305 | + | ||
| 306 | +#### kubernetes组件配置 | ||
| 307 | + | ||
| 308 | +- kube-apiserver | ||
| 309 | + | ||
| 310 | + ```yaml | ||
| 311 | + # spec.clusterConfig: | ||
| 312 | + cluster: | ||
| 313 | + apiServer: | ||
| 314 | + host: "" # 无需配置,地址从nodes配置中获取 | ||
| 315 | + port: 6443 # int32 类型,默认为6443 | ||
| 316 | + # kube-apiserver启动时自定义扩展参数,不配置是有默认值 | ||
| 317 | + # https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/ | ||
| 318 | + extraArgs: # 可选 默认添加authorization-mode: Node,RBAC | ||
| 319 | + authorization-mode: Node,RBAC | ||
| 320 | + # 额外挂载主机目录,示例如下 | ||
| 321 | + # https://kubernetes.io/docs/concepts/storage/volumes/#hostpath | ||
| 322 | + extraVolumes: # 可选 | ||
| 323 | + - name: vol | ||
| 324 | + hostPath: /data/source | ||
| 325 | + mountPath: /data/mount | ||
| 326 | + readOnly: false | ||
| 327 | + pathType: DirectoryOrCreate | ||
| 328 | + # 会将k8s master ip、127.0.0.1、VIP、master.bocloud.com以及该列中额外设置的值加入生成k8s证书中 | ||
| 329 | + # 正常使用无需配置该内容,建议预留IP或域名方便以后master扩容 | ||
| 330 | + certSANs: # 可选 | ||
| 331 | + - c1 | ||
| 332 | + - c2 | ||
| 333 | + ``` | ||
| 334 | + | ||
| 335 | +- kube-controller-manager | ||
| 336 | + | ||
| 337 | + ```yaml | ||
| 338 | + # spec.clusterConfig: | ||
| 339 | + cluster: | ||
| 340 | + controllerManager: # 可选 | ||
| 341 | + # kube-controller启动时自定义扩展参数,不配置是有默认值 | ||
| 342 | + # https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/ | ||
| 343 | + extraArgs: # 可选 | ||
| 344 | + cluster-name: kubernetes | ||
| 345 | + # 额外挂载主机目录,示例如下 | ||
| 346 | + # https://kubernetes.io/docs/concepts/storage/volumes/#hostpath | ||
| 347 | + extraVolumes: # 可选 | ||
| 348 | + - name: vol | ||
| 349 | + hostPath: /data/source | ||
| 350 | + mountPath: /data/mount | ||
| 351 | + readOnly: false | ||
| 352 | + pathType: DirectoryOrCreate | ||
| 353 | + ``` | ||
| 354 | + | ||
| 355 | +- kube-scheduler | ||
| 356 | + | ||
| 357 | + ```yaml | ||
| 358 | + # spec.clusterConfig: | ||
| 359 | + cluster: | ||
| 360 | + scheduler: # 可选 | ||
| 361 | + # kube-scheduler启动时自定义扩展参数,不配置是有默认值 | ||
| 362 | + # https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/ | ||
| 363 | + extraArgs: # 可选 | ||
| 364 | + bind-address: 0.0.0.0 | ||
| 365 | + # 额外挂载主机目录,示例如下 | ||
| 366 | + # https://kubernetes.io/docs/concepts/storage/volumes/#hostpath | ||
| 367 | + extraVolumes: # 可选 | ||
| 368 | + - name: vol | ||
| 369 | + hostPath: /data/source | ||
| 370 | + mountPath: /data/mount | ||
| 371 | + readOnly: false | ||
| 372 | + pathType: DirectoryOrCreate | ||
| 373 | + ``` | ||
| 374 | + | ||
| 375 | +- kubelet | ||
| 376 | + | ||
| 377 | + ```yaml | ||
| 378 | + # spec.clusterConfig: | ||
| 379 | + cluster: | ||
| 380 | + kubelet: | ||
| 381 | + # kubelet启动时自定义扩展参数,不配置是有默认值 | ||
| 382 | + # https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/ | ||
| 383 | + extraArgs: # 可选 | ||
| 384 | + address: 0.0.0.0 | ||
| 385 | + # 额外挂载主机目录,示例如下 | ||
| 386 | + # https://kubernetes.io/docs/concepts/storage/volumes/#hostpath | ||
| 387 | + extraVolumes: # 可选 | ||
| 388 | + - name: vol | ||
| 389 | + hostPath: /data/source | ||
| 390 | + mountPath: /data/mount | ||
| 391 | + readOnly: false | ||
| 392 | + pathType: DirectoryOrCreate | ||
| 393 | + # kubelet工作目录,存放证书、静态yaml等 | ||
| 394 | + manifestsDir: /etc/kubernetes/manifests # 可选 | ||
| 395 | + ``` | ||
| 396 | + | ||
| 397 | + 配置kubelet数据存放根目录 | ||
| 398 | + | ||
| 399 | + **ps: 可选, 配置kubelet 数据存储目录,此处所示为默认配置,没有填写时将会自动设置** | ||
| 400 | + | ||
| 401 | + ```yaml | ||
| 402 | + # spec.clusterConfig: | ||
| 403 | + cluster: | ||
| 404 | + kubelet: | ||
| 405 | + manifestsDir: /etc/kubernetes/manifests | ||
| 406 | + # 可选,配置kubelet 数据目录,此处所示为默认配置,没有填写时将会自动设置 | ||
| 407 | + # extraVolumes中配置一条name为kubelet-root-dir的才会生效否则会认为是普通的额外挂载 | ||
| 408 | + extraVolumes: | ||
| 409 | + - name: kubelet-root-dir | ||
| 410 | + hostPath: /var/lib/kubelet | ||
| 411 | + ``` | ||
| 412 | + | ||
| 413 | +- etcd | ||
| 414 | + | ||
| 415 | + ```yaml | ||
| 416 | + # spec.clusterConfig: | ||
| 417 | + cluster: | ||
| 418 | + etcd: # 可选 | ||
| 419 | + # etcd启动时自定义扩展参数,不配置是有默认值 | ||
| 420 | + # https://doczhcn.gitbook.io/etcd/index/index-1/configuration | ||
| 421 | + extraArgs: # 可选 | ||
| 422 | + snapshot-count: 1000 | ||
| 423 | + # 额外挂载主机目录,示例如下 | ||
| 424 | + # https://kubernetes.io/docs/concepts/storage/volumes/#hostpath | ||
| 425 | + extraVolumes: # 可选 | ||
| 426 | + - name: vol | ||
| 427 | + hostPath: /data/source | ||
| 428 | + mountPath: /data/mount | ||
| 429 | + readOnly: false | ||
| 430 | + pathType: DirectoryOrCreate | ||
| 431 | + # 数据目录,默认值/var/lib/etcd | ||
| 432 | + dataDir: "/var/lib/etcd" # 可选 默认 /var/lib/etcd | ||
| 433 | + # Etcd server证书额外授权的ip | ||
| 434 | + # 会将k8s master ip、127.0.0.1、VIP等以及该列中值加入生成k8s证书中 | ||
| 435 | + serverCertSANs: # 可选 | ||
| 436 | + - "192.168.1.110" | ||
| 437 | + # Etcd peer证书额外授权的ip | ||
| 438 | + # 会将k8s master ip、127.0.0.1、VIP等以及该列中值加入生成k8s证书中 | ||
| 439 | + peerCertSANs: # 可选 | ||
| 440 | + - "192.168.1.120" | ||
| 441 | + - "192.168.1.110" | ||
| 442 | + ``` | ||
| 443 | + | ||
| 444 | + | ||
| 445 | + | ||
| 446 | +#### 节点k8s组件定制化配置 | ||
| 447 | + | ||
| 448 | +```yaml | ||
| 449 | +# spec.ClusterConfig: | ||
| 450 | +nodes: # 可选 | ||
| 451 | + # 配置该节点的角色,目前只支持master和etcd绑定在一个节点配置 | ||
| 452 | + - role: # 必填 | ||
| 453 | + - master | ||
| 454 | + - etcd | ||
| 455 | + ip: 172.100.200.10 # 必填 | ||
| 456 | + port: "22" # 必填 | ||
| 457 | + username: root # 用户名密码是必须的,且保证ssh连接是通的 | ||
| 458 | + password: <ssh-password> | ||
| 459 | + hostname: master-1 # 会为节点设置成该hostname | ||
| 460 | + # 支持为每个节点单独配置他的 kube-apiserver/kubelet等配置,以及组件内部可扩展的参数 | ||
| 461 | + # 正常使用时无需配置 | ||
| 462 | + controllerManager: | ||
| 463 | + scheduler: | ||
| 464 | + apiServer: | ||
| 465 | + port: "6443" | ||
| 466 | + extraArgs: | ||
| 467 | + authorization-mode: Node,RBAC | ||
| 468 | + etcd: | ||
| 469 | + dataDir: /var/lib/etcd | ||
| 470 | + kubelet: | ||
| 471 | + manifestsDir: /etc/kubernetes/manifests | ||
| 472 | +``` | ||
| 473 | + | ||
| 474 | +#### 网络配置 | ||
| 475 | + | ||
| 476 | +```yaml | ||
| 477 | +# spec.clusterConfig: | ||
| 478 | +cluster: | ||
| 479 | + networking: # 可选 | ||
| 480 | + serviceSubnet: "10.96.0.0/12" # k8s service 子网,默认 10.96.0.0/12 | ||
| 481 | + podSubnet: "192.168.0.0/16" # k8s pod 子网,默认192.168.0.0/16 | ||
| 482 | + dnsDomain: "cluster.local" # k8s service 域名,默认cluster.local | ||
| 483 | +``` | ||
| 484 | + | ||
| 485 | +#### 自建ntp server | ||
| 486 | + | ||
| 487 | +```yaml | ||
| 488 | +# ntpServer该参数是必须的 | ||
| 489 | +# 如果节点可以访问公网时间服务器,填写一个地址即可 | ||
| 490 | +# 如果是内网且内网无时间服务器,则填写ntpServer: local, bke init会在引导节点启动ntp server | ||
| 491 | +# spec.clusterConfig: | ||
| 492 | +cluster: | ||
| 493 | + ntpServer: cn.pool.ntp.org:123 # 必填 | ||
| 494 | +``` | ||
| 495 | + | ||
| 496 | +#### http仓库 | ||
| 497 | + | ||
| 498 | +- http仓库兼具包含yum源,apt源,以及文件下载服务器的功能 | ||
| 499 | + | ||
| 500 | +```yaml | ||
| 501 | +# spec.clusterConfig: | ||
| 502 | +cluster: | ||
| 503 | + httpRepo: # 可选 | ||
| 504 | + domain: repo.example.com # 可选 默认repo.example.com | ||
| 505 | + ip: 192.168.56.21 | ||
| 506 | + port: "40080" # 可选 默认40080 | ||
| 507 | + prefix: "" | ||
| 508 | +# domain和ip不能为空, yum源配置为http://repo.example.com:40080, ip地址将会被写入/etc/hosts | ||
| 509 | +``` | ||
| 510 | + | ||
| 511 | +#### 镜像仓库 | ||
| 512 | + | ||
| 513 | +- 该镜像仓库 `prefix:kubernetes`需要存在所有部署k8s生态需要的镜像 | ||
| 514 | + | ||
| 515 | +```yaml | ||
| 516 | +# spec.clusterConfig: | ||
| 517 | +cluster: | ||
| 518 | + imageRepo: # 可选 | ||
| 519 | + domain: repo.example.com # 可选 默认repo.example.com | ||
| 520 | + ip: 192.168.12.25 # 可选 | ||
| 521 | + port: "40443" # 可选 默认40443 | ||
| 522 | + prefix: kubernetes # 可选 默认 kubernetes | ||
| 523 | +# 内网环境:doamin和ip不能为空, 镜像地址为repo.example.com:40443, ip地址将会被写入/etc/hosts | ||
| 524 | +# 公网环境: domain不能为空,ip可为空,域名需要能通过镜像仓库校验 | ||
| 525 | +``` | ||
| 526 | + | ||
| 527 | +#### kubernetes生态组件 | ||
| 528 | + | ||
| 529 | +- 当k8s集群启动后,会按照配置顺序依次部署组件 | ||
| 530 | +- 这部分可支持的组件为高度定制化组件,每个可加入的组件均是经过测试及定制化开发 | ||
| 531 | +- 单独列出一章来讲述kubernetes生态组件配置 | ||
| 532 | + | ||
| 533 | +```yaml | ||
| 534 | +# spec.clusterConfig: | ||
| 535 | +addons: # 可选,无默认值 | ||
| 536 | + - name: kubeproxy | ||
| 537 | + version: 1.25.6 | ||
| 538 | + block: true # 可选 默认true 阻塞,即等待该组件启动完成后才会部署下边组件 | ||
| 539 | + param: # 部署该组件需要的参数 | ||
| 540 | + clusterNetworkMode: calico | ||
| 541 | + - name: calico | ||
| 542 | + version: v3.25.0 | ||
| 543 | + param: | ||
| 544 | + calicoMode: bgp | ||
| 545 | + - name: coredns | ||
| 546 | + version: v1.10.1 | ||
| 547 | + - name: nfs-csi | ||
| 548 | + version: v4.1.0 | ||
| 549 | + block: true | ||
| 550 | + param: | ||
| 551 | + nfsServer: 192.0.2.186 | ||
| 552 | + # 该组件表示部署bocoperator,当bocoperator启动后部署boc产品 | ||
| 553 | + - name: bocoperator | ||
| 554 | + version: latest | ||
| 555 | + block: true | ||
| 556 | + param: | ||
| 557 | + boc.version: v4.0 | ||
| 558 | + boc.nfsserver: 192.0.2.186 | ||
| 559 | +``` | ||
| 560 | + | ||
| 561 | +#### 容器运行时配置 | ||
| 562 | + | ||
| 563 | +- 该配置将会运用到所有节点 | ||
| 564 | + | ||
| 565 | +```yaml | ||
| 566 | +# 配置容器运行时 | ||
| 567 | +containerRuntime: # 详情见下方章节 容器运行时配置 | ||
| 568 | +# 设置为containerd时请在下方customExtra字段中填写containerd版本,docker不用填写 | ||
| 569 | + cri: containerd # 可选docker、containerd,默认containerd | ||
| 570 | + runtime: runc # 可选 runc、richrunc、kata,默认runc | ||
| 571 | + # docker、containerd配置文件额外参数 | ||
| 572 | + # ps: 由于docker的containerd的配置文件格式不同,此处的key,value为定制参数 | ||
| 573 | + param: | ||
| 574 | + # 可选,CRI数据保存目录 | ||
| 575 | + # cri为containerd时默认为/var/lib/containerd | ||
| 576 | + # cri为docker时默认为/var/lib/docker | ||
| 577 | + # 没有填写时将会自动设置 | ||
| 578 | + data-root: /var/lib/containerd | ||
| 579 | +``` | ||
| 580 | + | ||
| 581 | +#### 自定义扩展参数 | ||
| 582 | + | ||
| 583 | +```yaml | ||
| 584 | +# spec.clusterConfig: | ||
| 585 | +customExtra: | ||
| 586 | + # contaienrd是必须的,且value需要符合命名规则^containerd-([a-z0-9\\.]+)-([a-z0-9]+)-([a-z0-9\\.\\{\\}]+).tar.gz$ | ||
| 587 | + containerd: containerd-1.6.16-linux-{.arch}.tar.gz | ||
| 588 | + # 可选,bkeagent-launcher-image纳管集群时使用的bkeagent-lancher镜像,未填写时将使用imageRepo中的镜像仓库生成镜像获取地址 | ||
| 589 | + bkeagent-launcher-image: "repo.example.com:40443/kubernetes/bkeagent-launcher:latest" | ||
| 590 | + # 可选,设置master vip的route ID,设置负载均衡器后,且未填写该值,控制器将随机生成1-255的数字填写 | ||
| 591 | + masterVirtualRouterId: '60' | ||
| 592 | + # 可选,设置beyondELB vip的route ID,beyondELB 组件中设置lbvip后,且未填写该值,控制器将随机生成1-255的数字填写 | ||
| 593 | + ingressVirtualRouterId: '200' | ||
| 594 | + # 可选, 设置boc的ci节点,并在该节点配置docker tls证书。当组件中设置bocoperator时,默认值为spec中第一个定义的master节点ip | ||
| 595 | + pipelineServer: "" | ||
| 596 | +``` | ||
| 597 | + | ||
| 598 | + | ||
| 599 | +#### 环境初始化脚本 | ||
| 600 | + | ||
| 601 | +```yaml | ||
| 602 | +# spec.clusterConfig: | ||
| 603 | +customExtra: | ||
| 604 | + # 可选 设置节点环境初始化额外执行脚本,未配置envExtraExecScripts时,默认执行以下脚本 | ||
| 605 | + # 脚本在cluster-system namespace中以同名configmap存储,eg: cluster-system/install-lxcfs.sh | ||
| 606 | + | ||
| 607 | + # boc业务集群,portal集群脚本 | ||
| 608 | + # install-lxcfs.sh 安装lxcfs 作用于所有节点 | ||
| 609 | + # install-nfsutils.sh 安装nfs-utils,作用于 customExtra[“pipelineServer”]中指定的节点 | ||
| 610 | + # install-etcdctl.sh 安装etcdctl,作用于所有etcd角色的节点 | ||
| 611 | + # install-helm.sh 安装helm 作用于所有master角色的节点 | ||
| 612 | + # install-calicoctl.sh 安装calicoctl 作用于所有master角色的节点 | ||
| 613 | + # update-runc.sh 升级runc版本小于1.1.12,当运行时是docker时作用于所有节点,containerd跳过 | ||
| 614 | + | ||
| 615 | + # aios业务集群,portal集群脚本 | ||
| 616 | + # nfs-mount.sh 挂载nfs服务器到主机/opt/bcc/storage2目录,作用于所有节点 | ||
| 617 | + envExtraExecScripts: "install-lxcfs.sh,install-nfsutils.sh,install-etcdctl.sh,install-helm.sh,install-calicoctl.sh,update-runc.sh" | ||
| 618 | +``` | ||
| @@ -0,0 +1,216 @@ | |||
| 1 | +### BKEConfig addons | ||
| 2 | + | ||
| 3 | +- addons中组件按照顺序进行安装,有的组件需要启动后才能进行下一步安装 | ||
| 4 | +- addons中组件均是经过定制化开发的,如下列出所有支持的组件及其参数 | ||
| 5 | +- 若需要安装非网络组件的addon,请将相关组件写在网络组件之后(网络组件填写参考下方) | ||
| 6 | + | ||
| 7 | +#### 示例 | ||
| 8 | + | ||
| 9 | +```yaml | ||
| 10 | +addons: | ||
| 11 | + - name: kubeproxy | ||
| 12 | + version: 1.25.6 | ||
| 13 | + block: true # 阻塞一直等到该组件启动成功,再部署下边组件,默认为false,不阻塞 | ||
| 14 | + param: | ||
| 15 | + xxx: xxxx # 定制化参数 | ||
| 16 | +``` | ||
| 17 | + | ||
| 18 | +#### 集群网络组件配置参考 | ||
| 19 | + | ||
| 20 | +注意: | ||
| 21 | + | ||
| 22 | +1. 请将网络组件根据下方示例结合实际情况选用不同组合,并将其写在addon最前方 | ||
| 23 | +2. 为了保证后续的组件能正常启动,下面所示的有关集群网络的addon均需要添加设置block: true参数 | ||
| 24 | +3. 详细的addon参数和参数说明解释,请看下方 | ||
| 25 | + | ||
| 26 | +以cni划分 | ||
| 27 | + | ||
| 28 | +**ipvs仅在使用calico加kubeproxy时支持,fabric不支持** | ||
| 29 | + | ||
| 30 | +- fabric(overlay模式) | ||
| 31 | + | ||
| 32 | + 根据实际需要,调整tunnelType 来改变fabric的网络模式,支持填写 `geneve、gre、erspan、vxlan`之一 | ||
| 33 | + | ||
| 34 | + ```yaml | ||
| 35 | + addons: | ||
| 36 | + - name: fabric | ||
| 37 | + block: true | ||
| 38 | + param: | ||
| 39 | + fabricMode: overlay | ||
| 40 | + cidrBlock: "10.250.0.0/16" # 按实际情况填写,填写后同时设置bkecluster.spec.clusterConfig.cluster.networking.podSubnet与其一致 | ||
| 41 | + excludeIps: "" # 没有则填写 "",支持ip段和单个ip,使用英文","分割。eg: "10.250.0.1-10.250.0.10,10.250.0.55" | ||
| 42 | + tunnelType: vxlan # geneve gre erspan vxlan | ||
| 43 | + subCIDRMask: "24" # 按实际情况填写 | ||
| 44 | + version: 2.6.2 | ||
| 45 | + - name: coredns | ||
| 46 | + block: true | ||
| 47 | + version: v1.10.1 | ||
| 48 | + ``` | ||
| 49 | + | ||
| 50 | +- fabric(underlay模式) | ||
| 51 | + | ||
| 52 | + ```yaml | ||
| 53 | + addons: | ||
| 54 | + - name: fabric | ||
| 55 | + block: true | ||
| 56 | + param: | ||
| 57 | + fabricMode: underlay | ||
| 58 | + cidrBlock: "10.250.0.0/16" # 按实际情况填写,填写后同时设置bkecluster.spec.clusterConfig.cluster.networking.podSubnet与其一致 | ||
| 59 | + excludeIps: "" # 没有则填写 "",支持ip段和单个ip,使用英文","分割。eg: "10.250.0.1-10.250.0.10,10.250.0.55" | ||
| 60 | + vlanID: "" # 按实际情况填写 | ||
| 61 | + gateway: "10.250.0.254" # 按实际情况填写 | ||
| 62 | + mask: "24" # 按实际情况填写 | ||
| 63 | + dataPlaneUnified: "eth1" # 按实际情况填写 | ||
| 64 | + version: 2.6.2 | ||
| 65 | + - name: coredns | ||
| 66 | + block: true | ||
| 67 | + version: v1.10.1 | ||
| 68 | + ``` | ||
| 69 | + | ||
| 70 | +- calico | ||
| 71 | + | ||
| 72 | + 根据实际需要,调整calicoMode 来改变calico的网络模式,支持填写`vxlan、bgp、ipip`之一 | ||
| 73 | + | ||
| 74 | + 根据实际需要,调整proxyMode 来设置kubeproxy转发模式,支持填写`iptables、ipvs`之一,可不填该参数 | ||
| 75 | + | ||
| 76 | + ```yaml | ||
| 77 | + addons: | ||
| 78 | + # kubeproxy 版本以k8s版本为准 | ||
| 79 | + - name: kubeproxy | ||
| 80 | + param: | ||
| 81 | + proxyMode: iptables # iptables、ipvs | ||
| 82 | + version: v1.25.6 # 版本以spec中定义的k8s版本为准 | ||
| 83 | + block: true | ||
| 84 | + - name: calico | ||
| 85 | + param: | ||
| 86 | + calicoMode: vxlan # vxlan bgp ipip | ||
| 87 | + version: v3.25.0 | ||
| 88 | + block: true | ||
| 89 | + - name: coredns | ||
| 90 | + version: v1.10.1 | ||
| 91 | + block: true | ||
| 92 | + ``` | ||
| 93 | + | ||
| 94 | +#### 组件名称:kubeporxy | ||
| 95 | + | ||
| 96 | +根据k8s集群版本选择 | ||
| 97 | + | ||
| 98 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | 必填 | kubernetes | 说明 | | ||
| 99 | +| -------- | -------- | ----------------- | -------------- | -------- | ---- | ---------- | ------------------------------------------------------------ | | ||
| 100 | +| v1.21.1 | 是 | proxyMode | iptables、ipvs | iptables | 否 | v1.21.1 | 设置kubeproxy的转发模式,无ipvs使用需求时,该参数可以不用设置,默认iptables | | ||
| 101 | +| v1.23.17 | 是 | 参数与v1.21.1一致 | | | | v1.23.17 | | | ||
| 102 | +| v1.25.6 | 是 | 参数与v1.21.1一致 | | | | v1.25.6 | | | ||
| 103 | +| v1.27.2 | 是 | 参数与v1.21.1一致 | | | | v1.27.2 | | | ||
| 104 | + | ||
| 105 | +#### 组件名称:calico | ||
| 106 | + | ||
| 107 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | 必填 | kubernetes | 说明 | | ||
| 108 | +| ------- | -------- | --------------------- | -------------- | ------ | ---- | ---------- | ------------------------------------------------------------ | | ||
| 109 | +| v3.25.0 | 是 | calicoMode | vxlan,bgp,ipip | 无 | 是 | >1.21 | 建议优先使用vxlan | | ||
| 110 | +| | | ipAutoDetectionMethod | "" | 无 | 否 | | all in one部署集群时需要设置该参数指定网卡,参数值设置请看该文档https://docs.tigera.io/calico/latest/reference/configure-calico-node#ip-autodetection-methods | | ||
| 111 | + | ||
| 112 | +#### 组件名称:fabirc | ||
| 113 | + | ||
| 114 | +此处参数说明仅供参考,具体配置请以对应版本的 Fabric 文档为准。 | ||
| 115 | + | ||
| 116 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | 必填 | kubernetes | 说明 | | ||
| 117 | +| ----- | -------- | ------------------ | ----------------------- | ------ | ---- | ---------- | ------------------------------------------------------------ | | ||
| 118 | +| 2.6.1 | 是 | 参数与2.6.2一致 | | | | | | | ||
| 119 | +| 2.6.2 | 是 | fabricMode | overlay,underlay | 无 | 是 | >1.21 | fabirc不需要kubeproxy,支持overlay和underlay,当前版本 | | ||
| 120 | +| | | cidrBlock | "" | 无 | 是 | | 网络范围,根据实际情况填写,填写后同时设置bkecluster.spec.clusterConfig.cluster.networking.podSubnet与其一致 | | ||
| 121 | +| | | tunnelType | vxlan,gre,erspan,geneve | 无 | 否 | | overlay网络使用的协议,fabricMode为overlay时填写 | | ||
| 122 | +| | | excludeIps | "" | 无 | 是 | | 排除的IP,没有则填写 "",支持ip段和单个ip,使用英文","分割。eg: "10.250.0.1-10.250.0.10,10.250.0.55" | | ||
| 123 | +| | | subCIDRMask | "" | 无 | 否 | | overlay网络在节点划分的子网掩码,fabricMode为overlay时填写 | | ||
| 124 | +| | | *vlanID* | "" | 无 | 否 | | vlan ID,fabricMode为underlay时填写 | | ||
| 125 | +| | | *gateway* | "" | 无 | 否 | | 网关 ,fabricMode为underlay时填写 | | ||
| 126 | +| | | *mask* | "" | 无 | 否 | | underlay网络在节点划分的子网掩码,fabricMode为underlay时填写 | | ||
| 127 | +| | | *dataPlaneUnified* | "" | 无 | 否 | | underlay数据网卡,fabricMode为underlay时填写 | | ||
| 128 | + | ||
| 129 | +#### 组件名称:coredns | ||
| 130 | + | ||
| 131 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | 必填 | kubernetes | 说明 | | ||
| 132 | +| ------- | -------- | ------- | --------- | ------ | ---- | ---------- | -------- | | ||
| 133 | +| v1.10.1 | 是 | 无 | 无 | 无 | 无 | >1.21 | 当前版本 | | ||
| 134 | + | ||
| 135 | +#### 组件名称:nfs-csi | ||
| 136 | + | ||
| 137 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | 必填 | kubernetes | 说明 | | ||
| 138 | +| ------ | -------- | --------- | --------- | ------ | ---- | ---------- | ----------- | | ||
| 139 | +| v4.1.0 | 否 | nfsServer | "" | 无 | 是 | 无 | nfs服务器IP | | ||
| 140 | + | ||
| 141 | +#### 组件名称:bocoperator | ||
| 142 | + | ||
| 143 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | 必填 | kubernetes | 说明 | | ||
| 144 | +| ------ | -------- | ---------- | ---------- |------| ---- | ---------- |-----------------------------| | ||
| 145 | +| latest | 否 | bocVersion | v4.0 | 无 | 是 | 无 | 目前只支持v4.0 | | ||
| 146 | +| | | isLocalDB | true,false | true | 否 | | 是否本地安装mysql数据库 | | ||
| 147 | +| | | dbHost | "" | 无 | 否 | | 外部数据库 用户提供地址,本地数据库,填写为mysql | | ||
| 148 | +| | | dbPort | "" | 无 | 是 | | 用户提供,数据库端口 | | ||
| 149 | +| | | dbUser | "" | 无 | 是 | | 用户提供,数据库用户 | | ||
| 150 | +| | | dbPassword | "" | 无 | 是 | | 用户提供,数据库密码 | | ||
| 151 | +| | | nfsServer | "" | 无 | 是 | | nfs 服务器IP | | ||
| 152 | + | ||
| 153 | +#### 组件名称:cluster-api | ||
| 154 | + | ||
| 155 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | kubernetes | 说明 | | ||
| 156 | +| ------ | -------- |--------|------------|-------| ---------- |---------------------------------------| | ||
| 157 | +| v1.4.3 | 是 | manage | true,false | false | >=v1.21 | 目标集群安装好cluster-api手是否在新集群上创建bc对集群进行纳管 | | ||
| 158 | + | ||
| 159 | +#### 组件名称:prometheus | ||
| 160 | + | ||
| 161 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | kubernetes | 说明 | | ||
| 162 | +| ------- | -------- | ------- | --------- | ------ | ---------- | -------- | | ||
| 163 | +| v2.32.1 | 否 | 无 | 无 | 无 | >=1.21 | 当前版本 | | ||
| 164 | + | ||
| 165 | +#### 组件名称:beyondac | ||
| 166 | + | ||
| 167 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | kubernetes | 说明 | | ||
| 168 | +| ------ | -------- | ------- | --------- | ------ | ---------- | -------- | | ||
| 169 | +| v2.0.2 | 否 | 无 | 无 | 无 | 无 | 无 | | ||
| 170 | +| v2.0.4 | 否 | 无 | 无 | 无 | >=1.21 | 无 | | ||
| 171 | +| v2.0.5 | 否 | 无 | 无 | 无 | >=1.21 | 当前版本 | | ||
| 172 | + | ||
| 173 | +#### 组件名称:beyondELB | ||
| 174 | + | ||
| 175 | +依赖prometheus,在prometheus之后安装 | ||
| 176 | + | ||
| 177 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | 必填 | kubernetes | 说明 | | ||
| 178 | +| ------ | -------- | ------- | --------- | ------ | ---- | ---------- | ------------------------------------------------ | | ||
| 179 | +| v2.1.5 | 否 | lbVIP | "" | 无 | 是 | >1.21 | ingress VIP,没有则填"",建议与lbNodes的ip同网段 | | ||
| 180 | +| | | lbNodes | "" | 无 | 是 | >1.21 | ip以英文 ","分割。eg: "ip1,ip2" | | ||
| 181 | + | ||
| 182 | +#### 组件名称:kubewebshell | ||
| 183 | + | ||
| 184 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | kubernetes | 说明 | | ||
| 185 | +| ----- | -------- | ------- | --------- | ------ | ---------- | -------- | | ||
| 186 | +| 0.1.8 | 否 | 无 | 无 | 无 | >=1.21 | 当前版本 | | ||
| 187 | + | ||
| 188 | +#### 组件名称:kubehelm | ||
| 189 | + | ||
| 190 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | kubernetes | 说明 | | ||
| 191 | +| ------ | -------- | ------- | --------- | ------ | ---------- | -------- | | ||
| 192 | +| 1.6.13 | 否 | 无 | 无 | 无 | >=1.21 | 当前版本 | | ||
| 193 | + | ||
| 194 | +#### 组件名称:kubectl | ||
| 195 | + | ||
| 196 | +根据k8s集群版本选择 | ||
| 197 | + | ||
| 198 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | kubernetes | 说明 | | ||
| 199 | +| ----- | -------- | ------- | --------- | ------ | ---------- | -------- | | ||
| 200 | +| v1.21 | 否 | 无 | 无 | 无 | =1.21 | 无 | | ||
| 201 | +| v1.23 | 否 | 无 | 无 | 无 | =1.23 | 无 | | ||
| 202 | +| v1.25 | 否 | 无 | 无 | 无 | 1.21-1.27 | 当前版本 | | ||
| 203 | + | ||
| 204 | +#### 组件名称:kubesecurity | ||
| 205 | + | ||
| 206 | +依赖prometheus,在prometheus之后安装 | ||
| 207 | + | ||
| 208 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | kubernetes | 说明 | | ||
| 209 | +| ------ | -------- | ------- | --------- | ------ | ------------- | -------- | | ||
| 210 | +| v1.2.0 | 否 | 无 | 无 | 无 | >1.21当前版本 | 当前版本 | | ||
| 211 | + | ||
| 212 | +#### 组件名称:etcdbackup | ||
| 213 | + | ||
| 214 | +| 版本 | 阻塞安装 | 参数key | 参数value | 默认值 | 必填 | kubernetes | 说明 | | ||
| 215 | +| ----- | -------- | --------- | --------- | ------ | ---- | ---------- | ------------------------------------------------------------ | | ||
| 216 | +| 3.4.3 | 否 | backupDir | "" | 无 | 是 | >1.21 | etcd备份文件存放目录, 若主机不存在该目录将会自动创建,当前版本 | | ||
| @@ -0,0 +1,195 @@ | |||
| 1 | +### 配置文件示例 | ||
| 2 | + | ||
| 3 | +#### 部署全量产品示例 | ||
| 4 | + | ||
| 5 | +- 该配置为全量的高可用及生态组件,包括boc的部署配置,可根据实际情况修改 | ||
| 6 | + | ||
| 7 | +```yaml | ||
| 8 | +apiVersion: bke.bocloud.com/v1beta1 | ||
| 9 | +kind: BKECluster | ||
| 10 | +metadata: | ||
| 11 | + name: bke-cluster | ||
| 12 | + namespace: bke-cluster | ||
| 13 | +spec: | ||
| 14 | + controlPlaneEndpoint: | ||
| 15 | + host: x.x.x.x | ||
| 16 | + port: 36443 | ||
| 17 | + clusterConfig: | ||
| 18 | + cluster: | ||
| 19 | + apiServer: | ||
| 20 | + port: "6443" | ||
| 21 | + controllerManager: | ||
| 22 | + etcd: | ||
| 23 | + dataDir: /var/lib/etcd | ||
| 24 | + scheduler: | ||
| 25 | + kubelet: | ||
| 26 | + manifestsDir: /etc/kubernetes/manifests | ||
| 27 | + kubernetesVersion: v1.25.6 | ||
| 28 | + certificatesDir: /etc/kubernetes/pki | ||
| 29 | + networking: | ||
| 30 | + dnsDomain: cluster.local | ||
| 31 | + podSubnet: 192.168.0.0/16 | ||
| 32 | + serviceSubnet: 10.96.0.0/12 | ||
| 33 | + ntpServer: cn.pool.ntp.org:123 | ||
| 34 | + imageRepo: | ||
| 35 | + domain: repo.example.com | ||
| 36 | + port: "40443" | ||
| 37 | + prefix: kubernetes | ||
| 38 | + httpRepo: | ||
| 39 | + domain: repo.example.com | ||
| 40 | + port: "40080" | ||
| 41 | + prefix: "" | ||
| 42 | + nodes: | ||
| 43 | + - hostname: master-1 | ||
| 44 | + ip: 172.100.200.10 | ||
| 45 | + username: root | ||
| 46 | + password: <ssh-password> | ||
| 47 | + port: "22" | ||
| 48 | + role: | ||
| 49 | + - master | ||
| 50 | + - etcd | ||
| 51 | + - hostname: master-2 | ||
| 52 | + ip: 172.100.200.11 | ||
| 53 | + username: root | ||
| 54 | + password: <ssh-password> | ||
| 55 | + port: "22" | ||
| 56 | + role: | ||
| 57 | + - master | ||
| 58 | + - etcd | ||
| 59 | + - hostname: master-3 | ||
| 60 | + ip: 172.100.200.12 | ||
| 61 | + username: root | ||
| 62 | + password: <ssh-password> | ||
| 63 | + port: "22" | ||
| 64 | + role: | ||
| 65 | + - master | ||
| 66 | + - etcd | ||
| 67 | + - hostname: worker-1 | ||
| 68 | + ip: 172.100.200.13 | ||
| 69 | + username: root | ||
| 70 | + password: <ssh-password> | ||
| 71 | + port: "22" | ||
| 72 | + role: | ||
| 73 | + - worker | ||
| 74 | + - hostname: worker-2 | ||
| 75 | + ip: 172.100.200.14 | ||
| 76 | + username: root | ||
| 77 | + password: <ssh-password> | ||
| 78 | + port: "22" | ||
| 79 | + role: | ||
| 80 | + - worker | ||
| 81 | + - hostname: worker-3 | ||
| 82 | + ip: 172.100.200.15 | ||
| 83 | + username: root | ||
| 84 | + password: <ssh-password> | ||
| 85 | + port: "22" | ||
| 86 | + role: | ||
| 87 | + - worker | ||
| 88 | + addons: | ||
| 89 | + - block: true | ||
| 90 | + name: fabric | ||
| 91 | + param: | ||
| 92 | + cidrBlock: 10.250.0.0/16 | ||
| 93 | + excludeIps: "" | ||
| 94 | + fabricMode: overlay | ||
| 95 | + subCIDRMask: "24" | ||
| 96 | + tunnelType: vxlan | ||
| 97 | + version: 2.6.1 | ||
| 98 | + - name: coredns | ||
| 99 | + version: v1.10.1 | ||
| 100 | + - name: nfs-csi | ||
| 101 | + param: | ||
| 102 | + nfsServer: 192.168.2.221 | ||
| 103 | + version: v4.1.0 | ||
| 104 | + - name: prometheus | ||
| 105 | + version: v2.32.1 | ||
| 106 | + - name: etcdbackup | ||
| 107 | + param: | ||
| 108 | + backupDir: /data/etcd_backup | ||
| 109 | + version: 3.4.3 | ||
| 110 | + - block: true | ||
| 111 | + name: cluster-api | ||
| 112 | + version: v1.4.3 | ||
| 113 | + - block: true | ||
| 114 | + name: bocoperator | ||
| 115 | + param: | ||
| 116 | + bocVersion: v4.0 | ||
| 117 | + dbHost: mariadb | ||
| 118 | + dbPassword: <db-password> | ||
| 119 | + dbPort: "3306" | ||
| 120 | + dbUser: root | ||
| 121 | + isLocalDB: "true" | ||
| 122 | + nfsServer: 192.168.2.221 | ||
| 123 | + version: latest | ||
| 124 | + customExtra: | ||
| 125 | + containerd: containerd-1.6.16-linux-{.arch}.tar.gz | ||
| 126 | +``` | ||
| 127 | + | ||
| 128 | + | ||
| 129 | + | ||
| 130 | +#### 仅部署k8s集群的极简配置 | ||
| 131 | + | ||
| 132 | +```yaml | ||
| 133 | + | ||
| 134 | +apiVersion: bke.bocloud.com/v1beta1 | ||
| 135 | +kind: BKECluster | ||
| 136 | +metadata: | ||
| 137 | + name: bke-cluster | ||
| 138 | + namespace: bke-cluster | ||
| 139 | +spec: | ||
| 140 | + controlPlaneEndpoint: | ||
| 141 | + host: x.x.x.x | ||
| 142 | + port: 36443 | ||
| 143 | + clusterConfig: | ||
| 144 | + cluster: | ||
| 145 | + kubernetesVersion: v1.25.6 | ||
| 146 | + ntpServer: cn.pool.ntp.org:123 | ||
| 147 | + imageRepo: | ||
| 148 | + domain: repo.example.com | ||
| 149 | + port: "40443" | ||
| 150 | + prefix: kubernetes | ||
| 151 | + yumRepo: | ||
| 152 | + domain: repo.example.com | ||
| 153 | + port: "40080" | ||
| 154 | + prefix: "" | ||
| 155 | + nodes: | ||
| 156 | + - hostname: master-1 | ||
| 157 | + ip: 172.100.200.10 | ||
| 158 | + username: root | ||
| 159 | + password: <ssh-password> | ||
| 160 | + port: "22" | ||
| 161 | + role: | ||
| 162 | + - master | ||
| 163 | + - etcd | ||
| 164 | + - hostname: worker-1 | ||
| 165 | + ip: 172.100.200.13 | ||
| 166 | + username: root | ||
| 167 | + password: <ssh-password> | ||
| 168 | + port: "22" | ||
| 169 | + role: | ||
| 170 | + - worker | ||
| 171 | + - hostname: worker-2 | ||
| 172 | + ip: 172.100.200.14 | ||
| 173 | + username: root | ||
| 174 | + password: <ssh-password> | ||
| 175 | + port: "22" | ||
| 176 | + role: | ||
| 177 | + - worker | ||
| 178 | + addons: | ||
| 179 | + - name: kubeproxy | ||
| 180 | + param: | ||
| 181 | + clusterNetworkMode: calico | ||
| 182 | + version: v1.25.6 | ||
| 183 | + block: true | ||
| 184 | + - name: calico | ||
| 185 | + param: | ||
| 186 | + calicoMode: vxlan | ||
| 187 | + version: v3.25.0 | ||
| 188 | + block: true | ||
| 189 | + - name: coredns | ||
| 190 | + version: v1.10.1 | ||
| 191 | + block: true | ||
| 192 | + customExtra: | ||
| 193 | + containerd: containerd-1.6.16-linux-{.arch}.tar.gz | ||
| 194 | +``` | ||
| 195 | + | ||
| @@ -0,0 +1,31 @@ | |||
| 1 | +### 集群检查 | ||
| 2 | + | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +#### kubernetes集群检查 | ||
| 6 | + | ||
| 7 | +- 登录目标集群k8s master节点,执行如下命令 | ||
| 8 | + | ||
| 9 | +```shell | ||
| 10 | +$ kubectl get nodes | ||
| 11 | +$ kubectl get pods -A | ||
| 12 | +# 输出符合预期部署即完成 | ||
| 13 | +``` | ||
| 14 | + | ||
| 15 | +#### boc校验 | ||
| 16 | + | ||
| 17 | +- 浏览器打开boc页面 | ||
| 18 | +- 查看boc pod均running | ||
| 19 | + | ||
| 20 | +```shell | ||
| 21 | +$ kubectl get pods -A | ||
| 22 | +``` | ||
| 23 | + | ||
| 24 | +#### 引导节点清理 | ||
| 25 | + | ||
| 26 | +- 当管理集群部署完成后,引导节点执行如下清理指令 | ||
| 27 | + | ||
| 28 | +```shell | ||
| 29 | +$ bke reset | ||
| 30 | +``` | ||
| 31 | + | ||
| @@ -0,0 +1,20 @@ | |||
| 1 | + | ||
| 2 | + | ||
| 3 | +#### KONK支持范围 | ||
| 4 | + | ||
| 5 | + | ||
| 6 | + | ||
| 7 | +##### kubernetes版本范围 | ||
| 8 | + | ||
| 9 | +- 目前支持的kubernetes范围为1.21.x-1.27.x | ||
| 10 | +- 目前自带v1.21.1 v1.23.17 v1.25.6 版本镜像,其他的k8s版本需要自主将镜像传到镜像仓库,便可以支持部署 | ||
| 11 | + | ||
| 12 | +#### 操作系统支持 | ||
| 13 | + | ||
| 14 | +| 操作系统 | 架构 | 运行时 | 引导节点 | | ||
| 15 | +| --------- | ------ | ----------------- | -------- | | ||
| 16 | +| centos 7 | x86_64 | docker/containerd | 支持 | | ||
| 17 | +| centos 8 | x86_64 | docker/containerd | 支持 | | ||
| 18 | +| ubuntu 22 | x86_64 | docker/containerd | 支持 | | ||
| 19 | +| kylin v10 | arm64 | docker/containerd | 支持 | | ||
| 20 | + | ||
| @@ -0,0 +1,138 @@ | |||
| 1 | +### Kubernetes集群管理 | ||
| 2 | + | ||
| 3 | +#### 集群扩容 | ||
| 4 | + | ||
| 5 | +- 在集群ready状态下,才可进行扩容操作 | ||
| 6 | + | ||
| 7 | +- 获取集群crd资源 | ||
| 8 | + | ||
| 9 | +```shell | ||
| 10 | +$ kubectl get bkecluster | ||
| 11 | +``` | ||
| 12 | + | ||
| 13 | +- 在bkecluster spec中存在字段 pause, 首先将其置于暂停状态 | ||
| 14 | + | ||
| 15 | +```yaml | ||
| 16 | +spec: | ||
| 17 | + pause: true | ||
| 18 | +``` | ||
| 19 | + | ||
| 20 | +- 然后再node中增加要添加的节点 | ||
| 21 | +- 注意该节点列表限制数为2048,当你有更多节点时可放置到和bkecluster同名的configmap中,与放在下边是一个意思 | ||
| 22 | + | ||
| 23 | +``` | ||
| 24 | +spec: | ||
| 25 | + clusterConfig: | ||
| 26 | + nodes: | ||
| 27 | + - hostname: master-1 | ||
| 28 | + ip: 172.100.200.10 | ||
| 29 | + username: root | ||
| 30 | + password: <ssh-password> | ||
| 31 | + port: "22" | ||
| 32 | + role: | ||
| 33 | + - master | ||
| 34 | + - etcd | ||
| 35 | +``` | ||
| 36 | + | ||
| 37 | +- 恢复暂停状态,触发扩容 | ||
| 38 | + | ||
| 39 | +```yaml | ||
| 40 | +spec: | ||
| 41 | + pause: false | ||
| 42 | +``` | ||
| 43 | + | ||
| 44 | + | ||
| 45 | + | ||
| 46 | +#### 集群缩容 | ||
| 47 | + | ||
| 48 | +- 在集群ready状态下,才可进行缩容操作 | ||
| 49 | +- 获取集群crd资源 | ||
| 50 | + | ||
| 51 | +```shell | ||
| 52 | +$ kubectl get bkecluster | ||
| 53 | +``` | ||
| 54 | + | ||
| 55 | +- 在bkecluster spec中存在字段 pause, 首先将其置于暂停状态 | ||
| 56 | + | ||
| 57 | +```yaml | ||
| 58 | +spec: | ||
| 59 | + pause: true | ||
| 60 | +``` | ||
| 61 | + | ||
| 62 | +- 设置预约删除注解 | ||
| 63 | + | ||
| 64 | +``` | ||
| 65 | +metadata: | ||
| 66 | + annotations: | ||
| 67 | + # 节点预约删除,节点删除是个危险的动作故增加此注释做二次确认,默认无 | ||
| 68 | + # 删除节点时除从spec中将节点删除,还需将要删除的节点ip填入,多个ip之间使用‘,’分割 | ||
| 69 | + # 两步操作少之其一都不会触发节点删除 | ||
| 70 | + bke.bocloud.com/appointment-deleted-nodes: "172.100.200.10" | ||
| 71 | +``` | ||
| 72 | + | ||
| 73 | +- 删除指定节点信息 | ||
| 74 | + | ||
| 75 | +``` | ||
| 76 | +spec: | ||
| 77 | + clusterConfig: | ||
| 78 | + nodes: | ||
| 79 | + - hostname: master-1 | ||
| 80 | + ip: 172.100.200.10 | ||
| 81 | + username: root | ||
| 82 | + password: <ssh-password> | ||
| 83 | + port: "22" | ||
| 84 | + role: | ||
| 85 | + - master | ||
| 86 | + - etcd | ||
| 87 | +``` | ||
| 88 | + | ||
| 89 | +- 恢复暂停状态,触发缩容 | ||
| 90 | + | ||
| 91 | +```yaml | ||
| 92 | +spec: | ||
| 93 | + pause: false | ||
| 94 | +``` | ||
| 95 | + | ||
| 96 | + | ||
| 97 | + | ||
| 98 | +#### 删除集群 | ||
| 99 | + | ||
| 100 | +- 设置bkecluster的spec.reset字段为true将销毁集群 | ||
| 101 | +- 在集群ready或者failed状态下,可删除集群 | ||
| 102 | + | ||
| 103 | +```yaml | ||
| 104 | +spec: | ||
| 105 | + reset: true # 此值为true则会销毁现有k8s集群 | ||
| 106 | +``` | ||
| 107 | + | ||
| 108 | +#### DryRun | ||
| 109 | + | ||
| 110 | +- 仅仅做环境检查,并不安装集群 | ||
| 111 | + | ||
| 112 | +```yaml | ||
| 113 | +spec: | ||
| 114 | + dryRun: false # 此值为true则进做环境检查不安装k8s集群 | ||
| 115 | +``` | ||
| 116 | + | ||
| 117 | +#### 部署暂停 | ||
| 118 | + | ||
| 119 | +- 当再部署过程中,更改如下值可暂停部署 | ||
| 120 | +- 任意时刻可暂停部署 | ||
| 121 | + | ||
| 122 | +```yaml | ||
| 123 | +spec: | ||
| 124 | + pause: true # 将此值改为true可暂停正在部署的集群 | ||
| 125 | +``` | ||
| 126 | + | ||
| 127 | +#### 集群升级 | ||
| 128 | + | ||
| 129 | +- 修改bkecluster中 spce.clusterConfig.cluster.kubernetesVersion进行集群升级 | ||
| 130 | +- 只有在集群ready状态下才能升级,在升级过程中配置文件不允许改动 | ||
| 131 | + | ||
| 132 | +```yaml | ||
| 133 | +spec: | ||
| 134 | + clusterConfig: | ||
| 135 | + cluster: | ||
| 136 | + kubernetesVersion: v1.21.1 # 只能修改成比当前版本大的值 | ||
| 137 | +``` | ||
| 138 | + | ||
| @@ -0,0 +1,118 @@ | |||
| 1 | +### KONK纳管已经存在的集群,以及升级原bocloud创建的集群 | ||
| 2 | + | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +#### 升级原bocloud创建的管理集群 | ||
| 6 | + | ||
| 7 | +要求 | ||
| 8 | + | ||
| 9 | +- kubernetes集群使用原方式已经升级到v1.21版本 | ||
| 10 | +- 准备好管理集群的kubeconfig文件 | ||
| 11 | +- 需要一台空服务器作为引导节点 | ||
| 12 | + | ||
| 13 | +第一步: 在引导节点将bke.tar.gz解压 | ||
| 14 | + | ||
| 15 | +第二步:解压完成后,执行`bke init` 在本机启动k3s集群并部署cluster-api服务等 | ||
| 16 | + | ||
| 17 | +第三步:准备好bkecluster.yaml文件 | ||
| 18 | + | ||
| 19 | +```yaml | ||
| 20 | +apiVersion: bke.bocloud.com/v1beta1 | ||
| 21 | +kind: BKECluster | ||
| 22 | +metadata: | ||
| 23 | + name: boc-work1 | ||
| 24 | + namespace: boc-work1 | ||
| 25 | + annotations: | ||
| 26 | + # 部署新集群为"",纳管老的bocloud部署的集群值为bocloud,纳管其他来源的k8s用other | ||
| 27 | + bke.bocloud.com/cluster-from: "bocloud" | ||
| 28 | +spec: | ||
| 29 | + # controlPlaneEndpoint 仅在使用k8s-token时填写,使用kubeconfig时不填写 | ||
| 30 | + controlPlaneEndpoint: | ||
| 31 | + host: 192.0.2.101 | ||
| 32 | + port: 6443 | ||
| 33 | + clusterConfig: | ||
| 34 | + customExtra: | ||
| 35 | + # 指定bkeagent-launcher镜像,若未填写则使用默认值,默认值如下所示 | ||
| 36 | + # 在进行纳管前请先确保目标集群能拉到该镜像 | ||
| 37 | + bkeagent-launcher-image: "repo.example.com:40443/kubernetes/bkeagent-launcher:latest" | ||
| 38 | +``` | ||
| 39 | + | ||
| 40 | +第四步:然后执行 `bke cluster exist -f bkecluster.yaml -c kubeconfig` 将文件提交到集群内 | ||
| 41 | + | ||
| 42 | +第五步:通过 `bke cluster list / bke cluster logs / kubectl get bkecluster -n boc-manager`等指令观察bkecluster是否已经收集完成管理集群信息 | ||
| 43 | + | ||
| 44 | +第六步:等待`bkecluster`已经处于`ready`状态,然后修改`spec.clusterConfig.kubernetesVersion=v1.27.x`进行集群升级 | ||
| 45 | + | ||
| 46 | +第七步:管理集群升级完成后,执行`bke reset` 删除引导节点上的k3s集群 | ||
| 47 | + | ||
| 48 | +#### 管理集群纳管原bocloud部署的集群 | ||
| 49 | + | ||
| 50 | +- 第一步:准备目标集群的kubeconfig文件,准备bkecluster.yaml文件 | ||
| 51 | + | ||
| 52 | +```yaml | ||
| 53 | +apiVersion: bke.bocloud.com/v1beta1 | ||
| 54 | +kind: BKECluster | ||
| 55 | +metadata: | ||
| 56 | + name: boc-work1 | ||
| 57 | + namespace: boc-work1 | ||
| 58 | + annotations: | ||
| 59 | + # 部署新集群为"",纳管老的bocloud部署的集群值为bocloud,纳管其他来源的k8s用other | ||
| 60 | + bke.bocloud.com/cluster-from: "bocloud" | ||
| 61 | +spec: | ||
| 62 | + # controlPlaneEndpoint 仅在使用k8s-token时填写,使用kubeconfig时不填写 | ||
| 63 | + controlPlaneEndpoint: | ||
| 64 | + host: 192.0.2.101 | ||
| 65 | + port: 6443 | ||
| 66 | + clusterConfig: | ||
| 67 | + customExtra: | ||
| 68 | + # 指定bkeagent-launcher镜像,若未填写则使用默认值,默认值如下所示 | ||
| 69 | + # 在进行纳管前请先确保目标集群能拉到该镜像 | ||
| 70 | + bkeagent-launcher-image: "repo.example.com:40443/kubernetes/bkeagent-launcher:latest" | ||
| 71 | +``` | ||
| 72 | + | ||
| 73 | +- 第二步:将kubeconfig或k8s token作为secret提交到集群后,再将第一步的bkecluster.yaml提交到集群, | ||
| 74 | + | ||
| 75 | + - kubeconfig secret命名规则 | ||
| 76 | + | ||
| 77 | + [bkecluster.name]-kubeconfig | ||
| 78 | + | ||
| 79 | + kubectl创建实例:`kubectl create secret generic boc-work1-kubeconfig --namespace=boc-work1 --from-file=value=kubeconfig` | ||
| 80 | + | ||
| 81 | + ```yaml | ||
| 82 | + apiVersion: v1 | ||
| 83 | + kind: Secret | ||
| 84 | + metadata: | ||
| 85 | + name: boc-work1-kubeconfig | ||
| 86 | + namespace: boc-work1 | ||
| 87 | + data: | ||
| 88 | + # 注意这里的key为value | ||
| 89 | + value: <kubeconfig content> | ||
| 90 | + ``` | ||
| 91 | + | ||
| 92 | + - k8s-token secret 命名规则 | ||
| 93 | + | ||
| 94 | + [bkecluster.name]-k8s-token | ||
| 95 | + | ||
| 96 | + kubectl创建实例:`kubectl create secret generic boc-work1-k8s-token --namespace=boc-work1 --from-file=token=k8s-token` | ||
| 97 | + | ||
| 98 | + ```yaml | ||
| 99 | + apiVersion: v1 | ||
| 100 | + kind: Secret | ||
| 101 | + metadata: | ||
| 102 | + name: boc-work1-k8s-token | ||
| 103 | + namespace: boc-work1 | ||
| 104 | + data: | ||
| 105 | + # 注意这里的key为token | ||
| 106 | + token: <k8s-token content> | ||
| 107 | + ``` | ||
| 108 | + | ||
| 109 | + - 创建证书时需要将相关secret创建到与bkecluster相同的namespace中 | ||
| 110 | + | ||
| 111 | + - 注意使用不同方式创建secret时,存储内容的的key一个为value一个为token | ||
| 112 | + - 注意使用token进行纳管时还要在BKECluster.spec 额外填写controlPlaneEndpoint.host和controlPlaneEndpoint.port | ||
| 113 | + - 注意BKE纳管集群依赖bkeagent-launcher镜像,在纳管前请先确保目标集群能拉到该镜像 | ||
| 114 | +- 第三步:等待收集完成目标集群信息 | ||
| 115 | +- 第四步:等待`bkecluster`已经处于`ready`状态,然后修改`spec.clusterConfig.kubernetesVersion=v1.27.x`进行集群升级 | ||
| 116 | + | ||
| 117 | +#### 管理集群纳管其他方式创建的集群 | ||
| 118 | + 纳管步骤与上方章节 管理集群纳管原bocloud部署的集群 一致但不支持纳管为KONK管理(对集群进行扩缩容删升级等操作) | ||
| @@ -0,0 +1,65 @@ | |||
| 1 | +## 健康集群维护注意事项 | ||
| 2 | + | ||
| 3 | +当BKECluster处于Ready状态时,代表目标集群处于健康状态 | ||
| 4 | + | ||
| 5 | +> Healthy和Unhealthy状态是BKECluster的最终状态。bke控制器对BKECluster的操作无异常后,最终都会处于Healthy状态(特殊的除外如暂停,集群异常,程序出错) | ||
| 6 | +> | ||
| 7 | +> Healthy状态由bke控制器主动检查后设置和watch远端集群节点状态被动触发检查设置,当远端集群的某一节点状态变化时,将会触发bke控制器的健康检查,任一节点Not-Ready都会让状态变为Unhealthy | ||
| 8 | + | ||
| 9 | +#### BKECluster资源修改 | ||
| 10 | + | ||
| 11 | +- 注解(annotations)允许修改的key-value | ||
| 12 | + | ||
| 13 | +| key | 是否立即生效 | 修改后影响范围 | 备注 | | ||
| 14 | +| -------------------------------------------- | ------------ | ------------------------------ | ------------------------------------------------------------ | | ||
| 15 | +| bke.bocloud.com/bkeagent-listener | 是 | agent监听 | 切换agent监听 | | ||
| 16 | +| bke.bocloud.com/deep-restore-node | 否 | 节点新增,节点删除,集群删除 | 节点环境初始化,节点删除,集群删除时清理容器运行时(docker containerd) | | ||
| 17 | +| bke.bocloud.com/ignore-target-cluster-delete | 否 | 集群删除 | 删除bc时是否将集群也移除 | | ||
| 18 | +| bke.bocloud.com/ignore-namespace-delete | 否 | 集群删除 | 删除bc时是否连同bc所在namespace一起删除 | | ||
| 19 | +| bke.bocloud.com/node-boot-wait-timeout | 否 | 节点新增 | 节点引导timeout时间,在面对网络速度差的环境建议调大 | | ||
| 20 | +| bke.bocloud.com/appointment-deleted-nodes | 否 | 节点预约删除 | 配合spec删除节点触发节点删除 | | ||
| 21 | +| bke.bocloud.com/master-schedulable | 否 | 新增master节点,master节点调度 | 设置master节点能否调度,对已有master节点不生效 | | ||
| 22 | + | ||
| 23 | +- 注解(annotations)**不允许**修改的key-value | ||
| 24 | + | ||
| 25 | +| key | 是否立即生效 | 修改后影响范围 | 备注 | | ||
| 26 | +| ---------------------------- | ------------ | -------------- | ------------------------------------------------------------ | | ||
| 27 | +| bke.bocloud.com/cluster-from | 是 | 所有 | 该注解直接决定了bke控制器处理bc的方式,若修改将会导致Ready后的其他所有操作出错,如节点扩缩容等 | | ||
| 28 | + | ||
| 29 | +- spec允许修改的字段 | ||
| 30 | + | ||
| 31 | +| 字段 | 是否立即生效 | 修改后影响范围 | 备注 | | ||
| 32 | +| --------------------------------------- | ------------ | ------------------------------- | ------------------------------------------------------------ | | ||
| 33 | +| pasue | 是 | 集群暂停 | | | ||
| 34 | +| reset | 是 | 集群删除 | 等同于删除bc | | ||
| 35 | +| clusterConfig.cluster.apiServer | 否 | 新增master节点 | 对已有master节点不生效 | | ||
| 36 | +| clusterConfig.cluster.controllerManager | 否 | 新增master节点 | 对已有master节点不生效 | | ||
| 37 | +| clusterConfig.cluster.etcd | 否 | 新增master节点 | 对已有master节点不生效 | | ||
| 38 | +| clusterConfig.cluster.scheduler | 否 | 新增master节点 | 对已有master节点不生效 | | ||
| 39 | +| clusterConfig.cluster.kubelet | 否 | 新增master节点 | 对已有master节点不生效 | | ||
| 40 | +| clusterConfig.cluster.containerRuntime | 否 | 新增节点,节点删除,集群删除 | 修改后会影响后续的加入的节点,删除节点和集群时会影响所有节点,可能会导致容器运行时数据无法清理干净 | | ||
| 41 | +| clusterConfig.cluster.kubernetesVersion | 是 | 集群升级 | 修改后会进行集群升级,只允许升级版本,操作不可逆!! | | ||
| 42 | +| clusterConfig.cluster.certificatesDir | 否 | 新增节点,节点删除,集群删除 | 修改后会影响后续的加入的节点,删除节点和集群时会影响所有节点,可能会导致证书目录无法按预期清空 | | ||
| 43 | +| clusterConfig.cluster.ntpServer | 否 | 新增节点 | 对已有节点不生效 | | ||
| 44 | +| clusterConfig.cluster.imageRepo | 否 | 新增节点 | 对已有节点不生效 | | ||
| 45 | +| clusterConfig.cluster.httpRepo | 否 | 新增节点 | 对已有节点不生效 | | ||
| 46 | +| clusterConfig.nodes | 是 | 新增节点,删除节点 | 删除节点需配置bke.bocloud.com/appointment-deleted-nodes注解实现节点删除 | | ||
| 47 | +| clusterConfig.addons | 是 | addon部署,addon卸载,addon升级 | | | ||
| 48 | + | ||
| 49 | +- spec**不允许**修改的字段 | ||
| 50 | + | ||
| 51 | +| 字段 | 是否立即生效 | 影响范围 | 备注 | | ||
| 52 | +| -------------------------------- | ------------ | -------------- | ------------------------------------------ | | ||
| 53 | +| controlPlaneEndpoint | | | 程序限制不可修改 | | ||
| 54 | +| clusterConfig.cluster.networking | 否 | 新增master节点 | 确保集群中各master节点网络参数一致,勿修改 | | ||
| 55 | + | ||
| 56 | +### Q&A | ||
| 57 | + | ||
| 58 | +1. 为何这么多的字段都允许修改? | ||
| 59 | + | ||
| 60 | + 目前bke还不稳定,需求瞬息万变无法确定。所以程序在处理时尽可能的放宽松了bc的修改,后续版本中将尽可能通过webhook限制使用者的修改操作 | ||
| 61 | + | ||
| 62 | + | ||
| 63 | + | ||
| 64 | + | ||
| 65 | + | ||
| @@ -0,0 +1,88 @@ | |||
| 1 | +### 制作部署资源模板 | ||
| 2 | + | ||
| 3 | +- 在代码仓库中,存在一个manifests项目用来专门存放k8s资源部署文件以及boc等产品的历次版本部署文件 | ||
| 4 | + | ||
| 5 | +#### 项目结构 | ||
| 6 | + | ||
| 7 | +- 该仓库存储结构如下所示,截取了部分展示 | ||
| 8 | + | ||
| 9 | +```shell | ||
| 10 | +$ tree -L 3 | ||
| 11 | +├── boc | ||
| 12 | +│ ├── v3.5 | ||
| 13 | +│ │ ├── 000-block-mysql.yaml | ||
| 14 | +│ │ ├── 010-import.yaml | ||
| 15 | +│ │ ├── 020-pipeline.yaml | ||
| 16 | +│ │ ├── 030-base.yaml | ||
| 17 | +│ │ ├── 040-licenseserver.yaml | ||
| 18 | +│ │ ├── 050-route.yaml | ||
| 19 | +│ │ ├── 060-task.yaml | ||
| 20 | +│ │ ├── 070-upms.yaml | ||
| 21 | +│ │ ├── 080-web.yaml | ||
| 22 | +│ │ ├── 090-shared.yaml | ||
| 23 | +│ │ ├── 100-boc.yaml | ||
| 24 | +│ │ └── deploy.yaml | ||
| 25 | +├── kubernetes | ||
| 26 | +│ ├── bocoperator | ||
| 27 | +│ │ ├── beta | ||
| 28 | +│ │ └── latest | ||
| 29 | +│ ├── calico | ||
| 30 | +│ │ ├── v3.14.1 | ||
| 31 | +│ │ └── v3.7.5 | ||
| 32 | +│ ├── cluster-api | ||
| 33 | +│ │ └── v1.1.4 | ||
| 34 | +│ ├── coredns | ||
| 35 | +│ │ └── v1.8.0 | ||
| 36 | +│ ├── efk | ||
| 37 | +│ │ └── 7.13.1 | ||
| 38 | +│ ├── fabric | ||
| 39 | +│ │ └── 2.12.0 | ||
| 40 | +│ ├── kubeproxy | ||
| 41 | +│ │ └── 1.21.1 | ||
| 42 | +│ ├── logrotate | ||
| 43 | +│ │ └── 1.2 | ||
| 44 | +│ ├── nfs-csi | ||
| 45 | +│ │ └── v4.1.0 | ||
| 46 | +│ └── prometheus | ||
| 47 | +│ └── v2.11.0 | ||
| 48 | +``` | ||
| 49 | + | ||
| 50 | +#### 模板yaml及参数规则 | ||
| 51 | + | ||
| 52 | +- 这里截取nfs-csi/v4.1.0中部分yaml展示 | ||
| 53 | + | ||
| 54 | +```yaml | ||
| 55 | +apiVersion: storage.k8s.io/v1 | ||
| 56 | +kind: StorageClass | ||
| 57 | +metadata: | ||
| 58 | + name: nfs-csi | ||
| 59 | +provisioner: nfs.csi.k8s.io | ||
| 60 | +parameters: | ||
| 61 | + server: {\{ .nfsServer }\} # go template 去掉\ | ||
| 62 | + share: / | ||
| 63 | + # csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume | ||
| 64 | + # csi.storage.k8s.io/provisioner-secret-name: "mount-options" | ||
| 65 | + # csi.storage.k8s.io/provisioner-secret-namespace: "default" | ||
| 66 | +reclaimPolicy: Retain | ||
| 67 | +volumeBindingMode: Immediate | ||
| 68 | +mountOptions: | ||
| 69 | + - nfsvers=4.1 | ||
| 70 | +``` | ||
| 71 | + | ||
| 72 | +#### Addons | ||
| 73 | + | ||
| 74 | +- 在删除yaml中可以看到 `{\{ .nfsServer }\} (去掉\)`部分,这addons中使用如下方式替换 | ||
| 75 | + | ||
| 76 | +```yaml | ||
| 77 | +addons: | ||
| 78 | + - name: nfs-csi # 待部署的组件,对应kubernetes下的nfs-csi目录 | ||
| 79 | + version: v4.1.0 # 版本,对应nfs-csi下的版本目录 | ||
| 80 | + block: true | ||
| 81 | + param: | ||
| 82 | + nfsServer: 192.0.2.186 # 对应v4.1.0目录中yaml文件中的 {\{ .nfsServer }\} 参数 | ||
| 83 | +``` | ||
| 84 | + | ||
| 85 | +#### boc相关资源文件 | ||
| 86 | + | ||
| 87 | +- 在bocoperator章节介绍 | ||
| 88 | + | ||
| @@ -0,0 +1,247 @@ | |||
| 1 | +### 依赖包制作 | ||
| 2 | + | ||
| 3 | +bke要完善运行,需要比较多的依赖包以及这些依赖包要按照规则来制作,下边我们来介绍一下各个依赖包以及制作规则 | ||
| 4 | + | ||
| 5 | +#### RPM源 | ||
| 6 | + | ||
| 7 | +- 首先启动一个Nginx服务,其可供下载的目录结构如下所示 | ||
| 8 | + | ||
| 9 | +```shell | ||
| 10 | +$ tree -L 4 | ||
| 11 | +├── CentOS | ||
| 12 | +│ ├── 7 | ||
| 13 | +│ │ ├── amd64 | ||
| 14 | +│ │ │ ├── docker-ce | ||
| 15 | +│ │ │ └── nfs-utils | ||
| 16 | +│ │ └── arm64 | ||
| 17 | +│ └── 8 | ||
| 18 | +│ ├── amd64 | ||
| 19 | +│ │ └── docker-ce | ||
| 20 | +│ └── arm64 | ||
| 21 | +├── files | ||
| 22 | +│ ├── bke | ||
| 23 | +│ ├── charts.tar.gz | ||
| 24 | +│ ├── containerd-1.6.16-linux-amd64.tar.gz | ||
| 25 | +│ ├── kubectl-v1.25.6-amd64 | ||
| 26 | +│ ├── kubectl-v1.25.6-arm64 | ||
| 27 | +│ └── nfsshare.tar.gz | ||
| 28 | +└── Kylin | ||
| 29 | + └── V10 | ||
| 30 | + ├── amd64 | ||
| 31 | + └── arm64 | ||
| 32 | +``` | ||
| 33 | + | ||
| 34 | +##### kubectl | ||
| 35 | + | ||
| 36 | +- kubectl文件,放置在files目录下 | ||
| 37 | + | ||
| 38 | +- 命名要求 | ||
| 39 | + | ||
| 40 | +```shell | ||
| 41 | +# template: kubectl-{.version}-{.arch} | ||
| 42 | +# example: kubectl-v1.25.6-amd64 | ||
| 43 | +``` | ||
| 44 | + | ||
| 45 | +- 用途 | ||
| 46 | + | ||
| 47 | +```shell | ||
| 48 | +# 当k8s集群部署完成后,会从该目录下载和k8s版本对应的kubectl文件放到master节点,若没有则下载失败 | ||
| 49 | +``` | ||
| 50 | + | ||
| 51 | +##### bke | ||
| 52 | + | ||
| 53 | +- bke文件,放置在files目录下 | ||
| 54 | + | ||
| 55 | +- 命名要求 | ||
| 56 | + | ||
| 57 | +```shell | ||
| 58 | +# template: bke_{.arch} | ||
| 59 | +# example: bke | ||
| 60 | +# example: bke_amd64 | ||
| 61 | +# example: bke_arm64 | ||
| 62 | +``` | ||
| 63 | + | ||
| 64 | +- 用途 | ||
| 65 | + | ||
| 66 | +```shell | ||
| 67 | +# 解压bke.tar.gz包时,该文件会被解压到/usr/bin目录下 | ||
| 68 | +# 对于单架构部署包,bke文件位置为/usr/bin/bke | ||
| 69 | +# 对于多架构部署包,bke文件位置为/usr/bin/bke_amd64 和 /usr/bin/bke_arm64, 用户需要根据系统架构选择合适的bke文件 | ||
| 70 | +``` | ||
| 71 | + | ||
| 72 | +##### charts | ||
| 73 | + | ||
| 74 | +- chart仓库所需要的数据文件,放置在files目录下 | ||
| 75 | +- 命名要求 | ||
| 76 | + | ||
| 77 | +```shell | ||
| 78 | +# 必须名称:charts.tar.gz | ||
| 79 | +# 必须名称:charts.tar.gz-v4.0 | ||
| 80 | +``` | ||
| 81 | + | ||
| 82 | +- charts.tar.gz内目录结构 | ||
| 83 | + | ||
| 84 | +```shell | ||
| 85 | +$ tree charts | ||
| 86 | +charts | ||
| 87 | +├── efk-7.3.0.tgz | ||
| 88 | +├── elasticsearch-1.32.1.tgz | ||
| 89 | +├── elasticsearch-1.32.2.tgz | ||
| 90 | +├── redis-ha-4.4.2.tgz | ||
| 91 | +├── redis-ha-4.4.3.tgz | ||
| 92 | +├── redis-ha-4.4.4.tgz | ||
| 93 | +└── tomcat-0.5.0.tgz | ||
| 94 | +# 打包 | ||
| 95 | +$ tar czvf charts.tar.gz charts/ | ||
| 96 | +``` | ||
| 97 | + | ||
| 98 | +- 用途 | ||
| 99 | + | ||
| 100 | +```shell | ||
| 101 | +# bke会启动chart仓库,以供k8s集群使用 | ||
| 102 | +``` | ||
| 103 | + | ||
| 104 | +##### nfsshare | ||
| 105 | + | ||
| 106 | +- nfs server 数据共享所需要的数据文件 | ||
| 107 | +- 命名要求 | ||
| 108 | + | ||
| 109 | +```shell | ||
| 110 | +# 必须名称:nfsshare.tar.gz | ||
| 111 | +# 必须名称:nfsshare.tar.gz-v4.0 | ||
| 112 | +``` | ||
| 113 | + | ||
| 114 | +- nfsshare.tar.gz内目录结构 | ||
| 115 | + | ||
| 116 | +```shell | ||
| 117 | +# 注意该目录下文件是直接能挂载的目录,并不是tar包 | ||
| 118 | +# 比如jenkins_home.tar.gz需要解压放到此nfsshare目录下,然后重新打出nfsshare.tar.gz包 | ||
| 119 | +$ tree nfsshare -L 1 | ||
| 120 | +nfsshare | ||
| 121 | +├── duoyinzi_pinyin.txt | ||
| 122 | +├── jenkins_home | ||
| 123 | +├── logo | ||
| 124 | +└── postgres | ||
| 125 | +# 打包 | ||
| 126 | +$ tar czvf nfsshare.tar.gz nfsshare/ | ||
| 127 | +``` | ||
| 128 | + | ||
| 129 | +- 用途 | ||
| 130 | + | ||
| 131 | +```shell | ||
| 132 | +# 为各个业务系统提供需要的数据 | ||
| 133 | +``` | ||
| 134 | + | ||
| 135 | +##### containerd | ||
| 136 | + | ||
| 137 | +- containerd是部署集群必须装的组件,放置在files下 | ||
| 138 | +- 命名要求 | ||
| 139 | + | ||
| 140 | +```shell | ||
| 141 | +# template: containerd-{.version}-linux-{.arch}.tar.gz | ||
| 142 | +# example: containerd-1.6.16-linux-amd64.tar.gz | ||
| 143 | +``` | ||
| 144 | + | ||
| 145 | +- containerd-1.6.16-linux-amd64.tar.gz包内目录结构 | ||
| 146 | + | ||
| 147 | +```shell | ||
| 148 | +# 在该包中包含了contaienrd、ctr、crictl、nerdctl、runc、beyondvm等文件,在目标节点解压该包便完成了containerd的安装 | ||
| 149 | +$ tree | ||
| 150 | +├── etc | ||
| 151 | +│ ├── containerd | ||
| 152 | +│ └── crictl.yaml | ||
| 153 | +└── usr | ||
| 154 | + ├── bin | ||
| 155 | + │ ├── containerd | ||
| 156 | + │ ├── containerd-shim | ||
| 157 | + │ ├── containerd-shim-runc-v1 | ||
| 158 | + │ ├── containerd-shim-runc-v2 | ||
| 159 | + │ ├── crictl | ||
| 160 | + │ ├── ctr | ||
| 161 | + │ └── nerdctl | ||
| 162 | + ├── lib | ||
| 163 | + │ └── systemd | ||
| 164 | + │ └── system | ||
| 165 | + │ └── containerd.service | ||
| 166 | + └── local | ||
| 167 | + ├── beyondvm | ||
| 168 | + │ └── runc | ||
| 169 | + └── sbin | ||
| 170 | + └── runc | ||
| 171 | +# 打包 | ||
| 172 | +$ tar czvf containerd-1.6.16-linux-amd64.tar.gz * | ||
| 173 | +``` | ||
| 174 | + | ||
| 175 | +- 用途 | ||
| 176 | + | ||
| 177 | +```shell | ||
| 178 | +# 在bkeconfig.yaml配置文件中,containerd为必填项,位置如下 | ||
| 179 | +customExtra: | ||
| 180 | + containerd: "containerd-1.6.16-linux-{.arch}.tar.gz" | ||
| 181 | +# 对于不同的系统架构及containerd版本需要制作多种多样的containerd文件 | ||
| 182 | +# bkeagent会根据所在宿主机架构,下载相对应的containerd文件来安装 | ||
| 183 | +``` | ||
| 184 | + | ||
| 185 | +##### docker-ce | ||
| 186 | + | ||
| 187 | +- docker的安装是完全的rpm包,该rpm包根据`系统/版本/架构/名称`的方式来存储 | ||
| 188 | + | ||
| 189 | +- 命名要求 | ||
| 190 | + | ||
| 191 | +```shell | ||
| 192 | +# 必须名称: docker-ce | ||
| 193 | +``` | ||
| 194 | + | ||
| 195 | +- 存储位置及结构 | ||
| 196 | + | ||
| 197 | +```shell | ||
| 198 | +$ tree CentOS/7/amd64/docker-ce/ | ||
| 199 | +CentOS/7/amd64/docker-ce/ | ||
| 200 | +├── acl-2.2.51-15.el7.x86_64.rpm | ||
| 201 | +├── audit-libs-2.8.5-4.el7.i686.rpm | ||
| 202 | +... | ||
| 203 | +# docker-ce 20, 共计200+rpm包,容量略大于200M | ||
| 204 | +``` | ||
| 205 | + | ||
| 206 | +- 用途 | ||
| 207 | + | ||
| 208 | +```shell | ||
| 209 | +# 目前引导节点已使用containerd, docker server 可不收集 | ||
| 210 | +``` | ||
| 211 | + | ||
| 212 | +##### 麒麟系统docker安装包制作 | ||
| 213 | + | ||
| 214 | +- 麒麟系统需要升级docker到24.0.7,docker24.0.7可以通过解压压缩包的方式安装和containerd安装类似 | ||
| 215 | + | ||
| 216 | +- 命名要求 | ||
| 217 | + | ||
| 218 | +```shell | ||
| 219 | +# 必须名称: docker-24.0.7-kylin-arm64.tar.gz | ||
| 220 | +``` | ||
| 221 | + | ||
| 222 | +- docker-24.0.7-kylin-arm64.tar.gz 目录内结构 | ||
| 223 | + | ||
| 224 | +```shell | ||
| 225 | +# tree | ||
| 226 | +└── usr | ||
| 227 | + ├── bin | ||
| 228 | + │ ├── containerd | ||
| 229 | + │ ├── containerd-shim-runc-v2 | ||
| 230 | + │ ├── ctr | ||
| 231 | + │ ├── docker | ||
| 232 | + │ ├── dockerd | ||
| 233 | + │ ├── docker-init | ||
| 234 | + │ ├── docker-proxy | ||
| 235 | + │ └── runc | ||
| 236 | + └── lib | ||
| 237 | + └── systemd | ||
| 238 | + └── system | ||
| 239 | + └── docker.service | ||
| 240 | +``` | ||
| 241 | + | ||
| 242 | +- 用途 | ||
| 243 | + | ||
| 244 | +```shell | ||
| 245 | +# 在麒麟系统中安装的docker | ||
| 246 | +``` | ||
| 247 | + | ||
| @@ -0,0 +1,143 @@ | |||
| 1 | +### 构建部署包 | ||
| 2 | + | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +#### 前提条件 | ||
| 6 | + | ||
| 7 | +- 准备一台服务器,在其上安装镜像仓库以及Nginx服务 | ||
| 8 | +- 镜像仓库收集了所有镜像包 | ||
| 9 | +- Nginx服务下已经安装依赖组件准备好所有文件 | ||
| 10 | +- 构建服务器存在docker环境 | ||
| 11 | +- 构建服务需要安装pigz,加快打包速度 | ||
| 12 | + | ||
| 13 | +#### 构建部署包 | ||
| 14 | + | ||
| 15 | +- 构建部署包,根据构建部署包的大小构建时间不同 | ||
| 16 | + | ||
| 17 | +- 建议在镜像仓库所在服务器进行,大大加快构建速度 | ||
| 18 | + | ||
| 19 | +```shell | ||
| 20 | +$ bke build -f build.yaml | ||
| 21 | +``` | ||
| 22 | + | ||
| 23 | +- 生成部署包命名规则 | ||
| 24 | + | ||
| 25 | +```shell | ||
| 26 | +# template: bke-{.version}-{.filename}-{.arch}-{.timestamp}.tar.gz | ||
| 27 | +# example: bke-v1.0.0-build-amd64-20221111151806.tar.gz | ||
| 28 | +``` | ||
| 29 | + | ||
| 30 | +#### 部署包结构 | ||
| 31 | + | ||
| 32 | +```shell | ||
| 33 | +$ tree | ||
| 34 | +├── bke | ||
| 35 | +│ ├── manifests.yaml # 该部署包的配置文件 | ||
| 36 | +│ └── volumes | ||
| 37 | +│ ├── image.tar.gz # 镜像仓库的数据包,包含大量的镜像文件 | ||
| 38 | +│ ├── registry.image-amd64 # 镜像仓库的镜像,通过类docker load 指令还原为镜像 | ||
| 39 | +│ └── source.tar.gz # 数据包,包含rpm源数据、nfsshare数据等等 | ||
| 40 | +└── usr | ||
| 41 | + └── bin | ||
| 42 | + └── bke # bke文件,多架构情况下会展示为bke_adm64 bke_arm64 俩文件 | ||
| 43 | +``` | ||
| 44 | + | ||
| 45 | + | ||
| 46 | + | ||
| 47 | +#### 配置文件 | ||
| 48 | + | ||
| 49 | +- 该配置文件是一个混合架构配置文件,仅做演示 | ||
| 50 | + | ||
| 51 | +```yaml | ||
| 52 | +# 必须内容,该镜像会被收集为部署包中的bke/volumes/registry.image-amd64 | ||
| 53 | +registry: | ||
| 54 | + imageAddress: registry.example.com/kubernetes/registry:2.8.1 | ||
| 55 | + architecture: | ||
| 56 | + - amd64 | ||
| 57 | +# 镜像列表,收集为部署包中的bke/volumes/image.tar.gz | ||
| 58 | +repos: | ||
| 59 | + - architecture: | ||
| 60 | + - amd64 | ||
| 61 | + - arm64 | ||
| 62 | + sourceRepo: registry.example.com/carina | ||
| 63 | + targetRepo: carina | ||
| 64 | + images: | ||
| 65 | + - name: carina-scheduler | ||
| 66 | + tag: | ||
| 67 | + - v0.11.1 | ||
| 68 | + - name: kube-webhook-certgen | ||
| 69 | + tag: | ||
| 70 | + - v1.1.1 | ||
| 71 | + - name: csi-resizer | ||
| 72 | + tag: | ||
| 73 | + - v1.5.0 | ||
| 74 | + - name: csi-node-driver-registrar | ||
| 75 | + tag: | ||
| 76 | + - v2.0.1 | ||
| 77 | + - name: livenessprobe | ||
| 78 | + tag: | ||
| 79 | + - v2.7.0 | ||
| 80 | + - architecture: | ||
| 81 | + - amd64 | ||
| 82 | + sourceRepo: registry.example.com/kubernetes | ||
| 83 | + targetRepo: kubernetes | ||
| 84 | + images: | ||
| 85 | + - name: nfs-server-alpine # 必须存在 | ||
| 86 | + tag: | ||
| 87 | + - 0.9.0 | ||
| 88 | + - name: nginx_yum_repo # 必须存在 | ||
| 89 | + tag: | ||
| 90 | + - 1.23.0-alpine | ||
| 91 | + - name: chartmuseum # 必须存在 | ||
| 92 | + tag: | ||
| 93 | + - v0.12.0 | ||
| 94 | + - name: k3s # 必须存在 | ||
| 95 | + tag: | ||
| 96 | + - v1.25.6-k3s1 | ||
| 97 | + - name: mirrored-pause # 必须存在 | ||
| 98 | + tag: | ||
| 99 | + - 3.6 | ||
| 100 | +# 源文件,收集为部署包中的bke/volumes/source.tar.gz | ||
| 101 | +# 目前部署k8s集群不需要docker | ||
| 102 | +rpms: | ||
| 103 | + - address: http://registry.example.com:40080/ | ||
| 104 | + system: | ||
| 105 | + - CentOS | ||
| 106 | + systemVersion: | ||
| 107 | + - "7" | ||
| 108 | + systemArchitecture: | ||
| 109 | + - amd64 | ||
| 110 | + directory: | ||
| 111 | + - docker-ce | ||
| 112 | +files: | ||
| 113 | + - address: http://registry.example.com:40080/files/ | ||
| 114 | + files: | ||
| 115 | + - bke # 必须存在 或者 bke_amd64/bke_arm64 | ||
| 116 | + - containerd-1.6.16-linux-amd64.tar.gz # 必须存在 | ||
| 117 | + - charts.tar.gz # 必须存在 或者 charts.tar.gz-v4.0 | ||
| 118 | + - nfsshare.tar.gz # 必须存在 或者 charts.tar.gz-v4.0 | ||
| 119 | + - kubectl-v1.25.6-amd64 # 必须存在 | ||
| 120 | + - cni-plugins-linux-amd64-v1.2.0.tgz # 必须存在 | ||
| 121 | +``` | ||
| 122 | + | ||
| 123 | +- 备注①: 该配置文件各个组件均支持多架构收集,一旦出现某个收集包不存在即会构建失败 | ||
| 124 | +- 备注②:rpms是目录文件,会收集对应包下的所有rpm包 | ||
| 125 | +- 备注③:files是一些需要下载的数据包 | ||
| 126 | +- 备注④:有一些配置文件中必须存在的内容,不存在则无法构建 | ||
| 127 | +- 备注⑤:特殊一点的bke在拉取镜像时,会尝试拉取目标镜像(image-name:tag)以及镜像(image-name:tag-arch),当这两个镜像均不存在时,则会构建失败 | ||
| 128 | + | ||
| 129 | +| 类型 | 名称 | 校验 | 必须存在 | | ||
| 130 | +| ---- | -------------------------------------------------- | -------- | -------- | | ||
| 131 | +| 镜像 | nfs-server-alpine:0.9.0 | 精确匹配 | 是 | | ||
| 132 | +| 镜像 | nginx_yum_repo:1.23.0-alpine | 精确匹配 | 是 | | ||
| 133 | +| 镜像 | chartmuseum:v0.12.0 | 精确匹配 | 是 | | ||
| 134 | +| 镜像 | k3s:v1.25.7-k3s1 | 精确匹配 | 是 | | ||
| 135 | +| 镜像 | mirrored-pause:3.6 | 精确匹配 | 是 | | ||
| 136 | +| 文件 | bke \| bke_amd64 \| bke_arm64 | 前缀匹配 | 是 | | ||
| 137 | +| 文件 | charts.tar.gz \| charts.tar.gz-v4.0 | 前缀匹配 | 是 | | ||
| 138 | +| 文件 | nfsshare.tar.gz \| charts.tar.gz-v4.0 | 前缀匹配 | 是 | | ||
| 139 | +| 文件 | containerd \| containerd-1.6.16-linux-amd64.tar.gz | 前缀匹配 | 是 | | ||
| 140 | +| 文件 | cni-plugins-linux-amd64-v1.2.0.tgz | 前缀匹配 | 是 | | ||
| 141 | +| 文件 | kubectl | 未校验 | 是 | | ||
| 142 | +| rpm | docker-ce | 未校验 | 否 | | ||
| 143 | + | ||