本手册全部操作均使用root用户。
基础套餐,最低硬件配置要求如下:
- Master:1台,负责 k8s 集群本身的管理调度,配置至少为4核8GB内存,100GB磁盘。建议配置3台Master节点,实现Master节点集群管理。
- Node:3台,负责承载业务运行。建议每台机器配置至少为8核32GB内存, 100GB磁盘。
基础套餐部署,共需4台服务器,详细如下表:
蓝鲸套餐 | 描述 | 最低配置 | 推荐配置 | 备注 |
基础套餐 | 后台及 SaaS | 2.5 台 node | 3 台 node | 8核32GB内存, 100GB磁盘 |
容器管理平台 | 容器管理后台及 SaaS | 0.7 台 node | 1 台 node | 4核8GB内存,100GB磁盘 |
监控套餐 | 监控、日志服务及其 SaaS | 1.5 台 node | 2 台 node | 如启用容器监控,k8s 集群存储应大于 500G |
持续集成套餐 | 目前仅包含流水线 | 2 台 node | 5 台 node | 流水线任务较多时需扩容 node |
需求项 | 具体要求 | 检查命令 | 修改命令 |
操作系统 | CentOS 7.9 64 位 | cat /etc/centos-release | 无 |
kernel | 3.10.0 及以上 | uname -r | 无 |
Swap | 关闭。防止 io 飙升影响 kubelet 进程。 | free -m; # Swap 这行值为 0 | vim /etc/fstab;# 注释 swap 行,重启系统 |
防火墙 | 关闭 | iptables -vnL 无其他规则/firewall-cmd --state | systemctl stop firewalld # 停止 systemctl disable firewalld # 禁用 |
SELinux | 关闭。k8s 官方要求。 | getenforce 的输出为 Disabled | # 或者修改配置文件,然后重启 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config |
时区 | 所有服务器时区应该统一,建议使用北京时间 | 使用 timedatectl set-timezone Asia/Shanghai 设置为北京时间。 | timedatectl set-timezone Asia/Shanghai |
时间同步 | etcd 选举时要求节点间时间差小于 1s | 配置 chronyd 同步时间 | Centos7.9默认开启 |
docker 版本 | 19.03 及更高 | docker version | |
kubenetes 版本 | 限 1.18 或 1.20,其他版本未经测试。用户报告 1.22 以上版本不兼容,1.17 版本部署 bcs 会失败。 | kubectl version |
本示例中,各服务器的配置如下表:
序号 | 类型 | 主机名 | IP | 备注(CPU/内存/硬盘) |
1 | Mater | k8s-api.bcs.local | 192.168.46.128 | 2C4G,20G |
2 | Mater | master-192-168-46-132 | 192.168.46.132 | 2C4G,20G |
3 | Mater | master-192-168-46-133 | 192.168.46.133 | 2C4G,20G |
4 | Node1 | node-192-168-46-129 | 192.168.46.129 | 2C4G,100G |
5 | Node2 | node-192-168-46-130 | 192.168.46.130 | 2C4G,100G |
6 | Node3 | node-192-168-46-131 | 192.168.46.131 | 2C4G,100G |
curl -fsSL https://bkopen-1252002024.file.myqcloud.com/ce7/bcs.sh | bash -s -- -i k8s
- 执行成功后,出现类似以下提示信息:
Kubernetes控制节点启动成功
扩容控制平面执行以下命令
cluster_env=T05fQ0xPVUQ9ImJhcmUtbWV0YWwiCkJDU19ESVI9Ii9yb290Ly5iY3MiCkJLX0hPTUU9Ii9kYXRhL2JjcyIKYmNzX3N5c2N0bD0iMSIKTUlSUk9SX0lQPSJudWxsIgpNSVJST1JfVVJMPSJodHRwczovL21pcnJvcnMudGVuY2VudC5jb20iCkJLUkVQT19VUkw9Im51bGwiCkRPQ0tFUl9MSUI9Ii9kYXRhL2Jjcy9saWIvZG9ja2VyIgpET0NLRVJfVkVSU0lPTj0iMTkuMDMuOSIKRE9DS0VSX0xJVkVfUkVTVE9SRT0iZmFsc2UiClJFUE9fTUlSUk9SUz0nWyJodHRwczovL21pcnJvci5jY3MudGVuY2VudHl1bi5jb20iXScKRE9DS0VSX0JSSURHRT0ibnVsbCIKQktfUFVCTElDX1JFUE89Imh1Yi5ia3RlbmNlbnQuY29tIgpCS19SRUxFQVNFX1JFUE89Imh1Yi5ia3RlbmNlbnQuY29tL2JsdWVraW5nIgpLVUJFTEVUX0xJQj0iL2RhdGEvYmNzL2xpYi9rdWJlbGV0IgpLOFNfVkVSPSIxLjIwLjExIgpLOFNfU1ZDX0NJRFI9IjEwLjk2LjAuMC8xMiIKSzhTX1BPRF9DSURSPSIxMC4yNDQuMC4wLzE2IgpLOFNfRVhUUkFfQVJHUz0iYWxsb3dlZC11bnNhZmUtc3lzY3RsczogbmV0LmlwdjQudGNwX3R3X3JldXNlIgpFVENEX0xJQj0iL2RhdGEvYmNzL2xpYi9ldGNkIgpCQ1NfSzhTX0NUUkxfSVA9IjE5Mi4xNjguNDYuMTI4Igo=
master_join_cmd_b64=a3ViZWFkbSBqb2luIGs4cy1hcGkuYmNzLmxvY2FsOjY0NDMgLS10b2tlbiA5dXgzYWkuZW00ZmlxMGV4cWh2N2l6YiAgICAgLS1kaXNjb3ZlcnktdG9rZW4tY2EtY2VydC1oYXNoIHNoYTI1Njo0MjIzNWUyMzFmYzk3YzJiNWNkYTNiOWUxYTE2OTcxYzYyYzkwOGFmOTdhZTExOWE3ZDNjNzdhZDhlNTdjMjk1ICAtLWNvbnRyb2wtcGxhbmUgLS1jZXJ0aWZpY2F0ZS1rZXkgZjk3NjM3MDY0OGMwYzA5ZmQ0ZDk0OWMwYjEyOGNiYTdmNzMwOTVhN2YxZTJmM2QwNGM3MWYxNDIwNjdlMjQxMA==
set +a
curl -fsSL https://bkopen-1252002024.file.myqcloud.com/ce7/bcs.sh | bash -s -- install k8s-control-plane
扩容节点执行以下命令
set -a
cluster_env=T05fQ0xPVUQ9ImJhcmUtbWV0YWwiCkJDU19ESVI9Ii9yb290Ly5iY3MiCkJLX0hPTUU9Ii9kYXRhL2JjcyIKYmNzX3N5c2N0bD0iMSIKTUlSUk9SX0lQPSJudWxsIgpNSVJST1JfVVJMPSJodHRwczovL21pcnJvcnMudGVuY2VudC5jb20iCkJLUkVQT19VUkw9Im51bGwiCkRPQ0tFUl9MSUI9Ii9kYXRhL2Jjcy9saWIvZG9ja2VyIgpET0NLRVJfVkVSU0lPTj0iMTkuMDMuOSIKRE9DS0VSX0xJVkVfUkVTVE9SRT0iZmFsc2UiClJFUE9fTUlSUk9SUz0nWyJodHRwczovL21pcnJvci5jY3MudGVuY2VudHl1bi5jb20iXScKRE9DS0VSX0JSSURHRT0ibnVsbCIKQktfUFVCTElDX1JFUE89Imh1Yi5ia3RlbmNlbnQuY29tIgpCS19SRUxFQVNFX1JFUE89Imh1Yi5ia3RlbmNlbnQuY29tL2JsdWVraW5nIgpLVUJFTEVUX0xJQj0iL2RhdGEvYmNzL2xpYi9rdWJlbGV0IgpLOFNfVkVSPSIxLjIwLjExIgpLOFNfU1ZDX0NJRFI9IjEwLjk2LjAuMC8xMiIKSzhTX1BPRF9DSURSPSIxMC4yNDQuMC4wLzE2IgpLOFNfRVhUUkFfQVJHUz0iYWxsb3dlZC11bnNhZmUtc3lzY3RsczogbmV0LmlwdjQudGNwX3R3X3JldXNlIgpFVENEX0xJQj0iL2RhdGEvYmNzL2xpYi9ldGNkIgpCQ1NfSzhTX0NUUkxfSVA9IjE5Mi4xNjguNDYuMTI4Igo=
join_cmd_b64=a3ViZWFkbSBqb2luIGs4cy1hcGkuYmNzLmxvY2FsOjY0NDMgLS10b2tlbiA5dXgzYWkuZW00ZmlxMGV4cWh2N2l6YiAgICAgLS1kaXNjb3ZlcnktdG9rZW4tY2EtY2VydC1oYXNoIHNoYTI1Njo0MjIzNWUyMzFmYzk3YzJiNWNkYTNiOWUxYTE2OTcxYzYyYzkwOGFmOTdhZTExOWE3ZDNjNzdhZDhlNTdjMjk1IA==
set +a
curl -fsSL https://bkopen-1252002024.file.myqcloud.com/ce7/bcs.sh | bash -s -- install k8s-node
curl -fsSL https://bkopen-1252002024.file.myqcloud.com/ce7/bcs.sh | bash -s -- -i k8sctrl
- 在每个master节点(master2和master3)上运行类似下面的命令(即上面第1步复制的命令):
set -a
cluster_env=T05fQ0xPVUQ9ImJhcmUtbWV0YWwiCkJDU19ESVI9Ii9yb290Ly5iY3MiCkJLX0hPTUU9Ii9kYXRhL2JjcyIKYmNzX3N5c2N0bD0iMSIKTUlSUk9SX0lQPSJudWxsIgpNSVJST1JfVVJMPSJodHRwczovL21pcnJvcnMudGVuY2VudC5jb20iCkJLUkVQT19VUkw9Im51bGwiCkRPQ0tFUl9MSUI9Ii9kYXRhL2Jjcy9saWIvZG9ja2VyIgpET0NLRVJfVkVSU0lPTj0iMTkuMDMuOSIKRE9DS0VSX0xJVkVfUkVTVE9SRT0iZmFsc2UiClJFUE9fTUlSUk9SUz0nWyJodHRwczovL21pcnJvci5jY3MudGVuY2VudHl1bi5jb20iXScKRE9DS0VSX0JSSURHRT0ibnVsbCIKQktfUFVCTElDX1JFUE89Imh1Yi5ia3RlbmNlbnQuY29tIgpCS19SRUxFQVNFX1JFUE89Imh1Yi5ia3RlbmNlbnQuY29tL2JsdWVraW5nIgpLVUJFTEVUX0xJQj0iL2RhdGEvYmNzL2xpYi9rdWJlbGV0IgpLOFNfVkVSPSIxLjIwLjExIgpLOFNfU1ZDX0NJRFI9IjEwLjk2LjAuMC8xMiIKSzhTX1BPRF9DSURSPSIxMC4yNDQuMC4wLzE2IgpLOFNfRVhUUkFfQVJHUz0iYWxsb3dlZC11bnNhZmUtc3lzY3RsczogbmV0LmlwdjQudGNwX3R3X3JldXNlIgpFVENEX0xJQj0iL2RhdGEvYmNzL2xpYi9ldGNkIgpCQ1NfSzhTX0NUUkxfSVA9IjE5Mi4xNjguNDYuMTI4Igo=
master_join_cmd_b64=a3ViZWFkbSBqb2luIGs4cy1hcGkuYmNzLmxvY2FsOjY0NDMgLS10b2tlbiB0dTNuMGsuMTRiZ3ppdm1sOHBxb3JoYiAgICAgLS1kaXNjb3ZlcnktdG9rZW4tY2EtY2VydC1oYXNoIHNoYTI1Njo0MjIzNWUyMzFmYzk3YzJiNWNkYTNiOWUxYTE2OTcxYzYyYzkwOGFmOTdhZTExOWE3ZDNjNzdhZDhlNTdjMjk1ICAtLWNvbnRyb2wtcGxhbmUgLS1jZXJ0aWZpY2F0ZS1rZXkgZDcyYzA2M2RlMGUyZDFlZjkxNzJiZWVlZTA5YjIxNzZjYTZlMDBhMWM4MTg5YTY0ZGFkNTJkNjRmNjkzZTZhYQ==
set +a
curl -fsSL https://bkopen-1252002024.file.myqcloud.com/ce7/bcs.sh | bash -s -- install k8s-control-plane
扩容成功如下图(扩容期间需要从外网下载安装包,请确保网络畅通):
curl -fsSL https://bkopen-1252002024.file.myqcloud.com/ce7/bcs.sh | bash -s -- -i k8sctrl
- 在每个节点(Node1,Node2和Node3)上运行下面命令(即上面第1步复制的命令):
set -a
cluster_env=T05fQ0xPVUQ9ImJhcmUtbWV0YWwiCkJDU19ESVI9Ii9yb290Ly5iY3MiCkJLX0hPTUU9Ii9kYXRhL2JjcyIKYmNzX3N5c2N0bD0iMSIKTUlSUk9SX0lQPSJudWxsIgpNSVJST1JfVVJMPSJodHRwczovL21pcnJvcnMudGVuY2VudC5jb20iCkJLUkVQT19VUkw9Im51bGwiCkRPQ0tFUl9MSUI9Ii9kYXRhL2Jjcy9saWIvZG9ja2VyIgpET0NLRVJfVkVSU0lPTj0iMTkuMDMuOSIKRE9DS0VSX0xJVkVfUkVTVE9SRT0iZmFsc2UiClJFUE9fTUlSUk9SUz0nWyJodHRwczovL21pcnJvci5jY3MudGVuY2VudHl1bi5jb20iXScKRE9DS0VSX0JSSURHRT0ibnVsbCIKQktfUFVCTElDX1JFUE89Imh1Yi5ia3RlbmNlbnQuY29tIgpCS19SRUxFQVNFX1JFUE89Imh1Yi5ia3RlbmNlbnQuY29tL2JsdWVraW5nIgpLVUJFTEVUX0xJQj0iL2RhdGEvYmNzL2xpYi9rdWJlbGV0IgpLOFNfVkVSPSIxLjIwLjExIgpLOFNfU1ZDX0NJRFI9IjEwLjk2LjAuMC8xMiIKSzhTX1BPRF9DSURSPSIxMC4yNDQuMC4wLzE2IgpLOFNfRVhUUkFfQVJHUz0iYWxsb3dlZC11bnNhZmUtc3lzY3RsczogbmV0LmlwdjQudGNwX3R3X3JldXNlIgpFVENEX0xJQj0iL2RhdGEvYmNzL2xpYi9ldGNkIgpCQ1NfSzhTX0NUUkxfSVA9IjE5Mi4xNjguNDYuMTI4Igo=
join_cmd_b64=a3ViZWFkbSBqb2luIGs4cy1hcGkuYmNzLmxvY2FsOjY0NDMgLS10b2tlbiByd3Zobm4uYzd0c3UyejV4bWdkeHUyOSAgICAgLS1kaXNjb3ZlcnktdG9rZW4tY2EtY2VydC1oYXNoIHNoYTI1Njo0MjIzNWUyMzFmYzk3YzJiNWNkYTNiOWUxYTE2OTcxYzYyYzkwOGFmOTdhZTExOWE3ZDNjNzdhZDhlNTdjMjk1IA==
set +a
curl -fsSL https://bkopen-1252002024.file.myqcloud.com/ce7/bcs.sh | bash -s -- install k8s-node
安装成功如下:
【说明】中控机默认工作目录为 ~/bkhelmfile/blueking/,另有注明除外。
- 转到root用户home目录,执行如下命令:
cd ~
- 创建工作目录,执行如下命令:
mkdir -p bkhelmfile/blueking
- 跳转到默认工作目录,执行如下命令:
cd bkhelmfile/blueking
- 执行成功如下图:
yum install -y jq unzip uuid
- 命令执行成功如下图:
注:CentOS 7在epel源提供了jq-1.6。如果提示No package jq available,请先确保epel源可用。解决方法如下,安装EPEL完成后再重新执行上面命令:
【下载并安装EPEL(https://blog.csdn.net/shashayangzhou/article/details/52974196)】
[root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@localhost ~]# rpm -ivh epel-release-latest-7.noarch.rpm
[root@localhost ~]# yum repolist ##检查是否已添加至源列表
【说明】在后续部署过程中,部分命令会从中控机上调用ssh在k8s node上执行远程命令,所以需提前配置免密登录。
- 在中控机执行如下命令:
k8s_nodes_ips=$(kubectl get nodes -o jsonpath='{$.items[*].status.addresses[?(@.type=="InternalIP")].address}')
test -f /root/.ssh/id_rsa || ssh-keygen -N '' -t rsa -f /root/.ssh/id_rsa # 如果不存在rsa key则创建一个。
# 开始给发现的ip添加ssh key,期间需要您输入各节点的密码。
for ip in $k8s_nodes_ips; do
ssh-copy-id "$ip" || { echo "failed on $ip."; break; } # 如果执行失败,则退出
done
- 执行成功如下图:
常见报错:Host key verification failed,且开头提示REMOTE HOST IDENTIFICATION HAS CHANGED: 检查目的主机是否重装过。如果确认没连错机器,可以参考提示(如Offending 类型 key in /root/.ssh/known_hosts:行号)删除known_hosts文件里的对应行。
【说明】目前容器化的软件包数量较多且变动频繁,请通过下面下载脚本下载。
- 跳转到默认工作目录,执行如下命令:
cd ~/bkhelmfile/blueking
- 下载蓝鲸基础套餐 helmfile 及公共证书,执行如下命令:
curl -sSf https://bkopen-1252002024.file.myqcloud.com/ce7/7.0-stable/bkdl-7.0-stable.sh | bash -s -- -ur latest base cert
- 下载成功如下图:
注:网络策略要求:
中控机(部署前文件下载,以及部署开始时下载 charts):
需要能访问蓝鲸静态文件分发站点:https://bkopen-1252002024.file.myqcloud.com。
需要能访问蓝鲸 Helm repo:https://hub.bktencent.com/。
k8s node(部署期间需要联网下载容器镜像):
需要能访问 Docker Hub: https://docker.io 等。
需要能访问蓝鲸 Docker registry: https://hub.bktencent.com/。
【说明】下文中会使用 “一键脚本” 来称呼 setup_bkce7.sh,本次用到的参数如下:
-i base:指定要安装的模块。关键词 base 表示基础套餐的后台部分。
--domain BK_DOMAIN:指定蓝鲸的基础域名(下文也会使用 BK_DOMAIN 这个变量名指代)。
【提示】当你的内网存在蓝鲸 V6 或更早版本的环境时,请勿复用基础域名。以免 Cookie 冲突,导致频繁提示登录,甚至循环提示登录。
示例:当 V6 环境使用了 bktencent.com 时,其访问地址为 paas.bktencent.com。V7环境不能使用bkce7.bktencent.com、bktencent.com或者 xx.bkce7.bktencent.com 作为基础域名。
- 假设您用于部署蓝鲸的域名为bkce7.bktencent.com,使用如下的命令开始部署:
BK_DOMAIN=bkce7.bktencent.com # 请修改为您分配给蓝鲸平台的主域名
cd ~/bkhelmfile/blueking/ # 进入工作目录
# 检查域名是否符合k8s域名规范,要全部内容匹配才执行脚本,否则提示域名不符合。
patt_domain='[a-z0-9]([-a-z0-9]*[a-z0-9])(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'
if grep -P "$patt_domain" <<< "$BK_DOMAIN"; then
scripts/setup_bkce7.sh -i base --domain "$BK_DOMAIN"
else
echo "BK_DOMAIN($BK_DOMAIN) does not match pattern($patt_domain)."
fi
脚本耗时8 ~ 16分钟,请耐心等待。部署成功会高亮提示 install finished,clean pods in completed status。