本文来自腾讯Tencent BlueKing社区用户:shenjinrui
使用一台服务器,既是k8s master节点又是node节点。
基础环境信息
系统:CentOS 7.9 CPU/内存: 64C/128G
机器信息
k8s环境准备
安装docker ,docker版本要求:19.03 及更高
yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release -y
yum install container-selinux -y
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce-20.10.20-3.el7
安装k8s 这里使用github上开源的一个ansible脚本来安装k8s
# 安装 git 命令行
yum install git -y
# 克隆本项目代码
git clone https://github.com/choerodon/kubeadm-ha.git
# 进入项目目录
cd kubeadm-ha
# 安装 ansible 环境
sudo ./ansible/install.sh
配置好 ansible inventory 文件,然后执行
ansible-playbook -i inventory.ini 90-init-cluster.yml
注:
1、更详细的说明,可以查看https://github.com/choerodon/kubeadm-ha.git
2、这个脚本的使用最主要的是配置inventory文件,以下我的inventory文件的内容
[all]
10.16.34.37 ansible_port=22 ansible_user="root" ansible_ssh_pass="机器密码"
[lb]
[etcd]
10.16.34.37
[kube-master]
10.16.34.37
[kube-worker]
10.16.34.37
[new-master]
[new-worker]
[new-etcd]
[del-worker]
[del-master]
[del-etcd]
[del-node]
[all:vars]
skip_verify_node=false
kube_version="1.20.0"
container_manager="docker"
lb_mode="nginx"
lb_kube_apiserver_port="8443"
kube_pod_subnet="10.244.0.0/18"
kube_service_subnet="10.244.64.0/18"
kube_network_node_prefix="24"
kube_max_pods="400"
network_plugin="calico"
kubelet_root_dir="/data/kubelet"
docker_storage_dir="/data/docker"
containerd_storage_dir="/data/containerd"
etcd_data_dir="/data/etcd"
部署NFS,并配置相应的存储类
mkdir /data/nfs
yum install -y nfs-utils
echo '/data/nfs 10.16.34.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)' > /etc/exports
sudo systemctl enable nfs-server
sudo systemctl start nfs-server
helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
helm repo update
helm upgrade --install nfs-client-provisioner c7n/nfs-client-provisioner \
--set rbac.create=true \
--set persistence.enabled=true \
--set storageClass.name=nfs-provisioner \
--set persistence.nfsServer=10.16.34.37 \
--set persistence.nfsPath=/data/nfs \
--version 0.1.1 \
--namespace kube-system
把存储类配置成默认存储类
kubectl patch storageclass nfs-provisioner -p '{"metadata": {"annotations":{"storageclass.beta.kubernetes.io/is-default-class":"true"}}}'
安装其它依赖包
yum install -y jq unzip uuid
安装Tencent BlueKing7.1
整个过程都是根据社区文档 https://bk.tencent.com/docs/document/7.0/253/69744 这里主要记录我在这个过程中碰到的问题,详细的安装过程以社区文档为准
安装基础套餐
#下载Tencent BlueKing helmfile包及公共证书
curl -sSf https://bkopen-1252002024.file.myqcloud.com/ce7/7.1-beta/bkdl-7.1-beta.sh | bash -s -- -ur latest base cert
#会把文件下载到 /root/bkce7.1-install/blueking/ 目录下
#执行一键安装脚本,安装基础后台
BK_DOMAIN=bkce7.jinrui.org
cd ~/bkce7.1-install/blueking/
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
安装到bk-paas、bk-repo,碰到如下的报错,无法解决
多次折腾,还是报一样的错,但是pod无明显的错误日志,并且pod一直在重启。 经过各种重试,发现这个是pod资源不足导致的,调整pod的资源限额,启动正常,调整bk-repo的资源配额的过程如下 vi /root/bkce7.1-install/blueking/environments/default/bkrepo-values.yaml.gotmpl 下面的我使用的文件的完整内容,其中 “# 新加 开始 ======= # 新加 结束 =======”就是我自行增加的,"# 修改 开始 ======= # 修改 结束 =======" 就是我自行修改过的。
global:
imageRegistry: {{ .Values.imageRegistry }}
## bkDomainScheme配置
bkDomainScheme: {{ .Values.bkDomainScheme }}
# metrics采集配置
serviceMonitor:
enabled: {{ .Values.serviceMonitor.enabled }}
## 日志采集配置
bkLogConfig:
enabled: {{ .Values.bkLogConfig.enabled }}
service:
dataId: 1110007
gatewayAccess:
dataId: 1110008
gatewayError:
dataId: 1110009
persistence:
size: {{ .Values.bkrepo.size }}
mongodb:
enabled: false
externalMongodb:
uri: mongodb://{{ .Values.bkrepo.externalMongodb.username }}:{{ .Values.bkrepo.externalMongodb.password }}@{{ .Values.mongodb.host_port }}/{{ .Values.bkrepo.externalMongodb.database }}?replicaSet={{ .Values.mongodb.rsName }}
nginx-ingress-controller:
enabled: false
common:
username: {{ .Values.bkrepo.common.username }}
password: {{ .Values.bkrepo.common.password }}
docker:
enabled: true
## 初始化配置
init:
# 初始化bk-ci(蓝盾)导航
entrance:
enabled: false
bkCiProjectInnerUrl:
## BCS(容器管理平台) repo配置
bcs:
enabled: true
publicImageUrl: https://hub.bktencent.com/blueking
publicChartUrl: https://hub.bktencent.com/chartrepo/blueking
## 网关配置
gateway:
## bkrepo 地址
host: bkrepo.{{ .Values.domain.bkDomain }}
## bkrepo docker仓库地址
dockerHost: docker.{{ .Values.domain.bkDomain }}
## bkrepo helm仓库地址
helmHost: helm.{{ .Values.domain.bkDomain }}
## dns服务器地址,用于配置nginx resolver。local=on为openrestry语法,取本机/etc/resolv.conf配置
dnsServer: local=on
## 网关访问微服务认证信息
authorization: "Platform MThiNjFjOWMtOTAxYi00ZWEzLTg5YzMtMWY3NGJlOTQ0YjY2OlVzOFpHRFhQcWs4NmN3TXVrWUFCUXFDWkxBa00zSw=="
## 部署模式,standalone: 独立模式,ci: 与ci搭配模式, saas模式:部署在Tencent BlueKingpaas上
deployMode: saas
## 登陆校验模式,ticket or token or ci
authMode: token
## ci模式必填,Tencent BlueKing paas域名
bkPaasUrl: {{ .Values.bkDomainScheme }}://{{ .Values.domain.bkMainSiteDomain }}
## ci模式必填,登录地址
bkLoginUrl: {{ .Values.bkDomainScheme }}://{{ .Values.domain.bkMainSiteDomain }}/login
## ci模式必填,ssm ip
ssmIP0: bkssm-web.{{ .Values.namespace }}.svc.cluster.local
## ci模式必填,ssm host
ssmHost: bkssm-web.{{ .Values.namespace }}.svc.cluster.local
## ci模式必填,ssm port
ssmPort: 80
## ci模式必填,ssm token url
ssmTokenUrl: /api/v1/auth/access-tokens
## ci模式必填,ssm env
ssmEnv: prod
## ci模式必填,app code
appCode: bk_repo
## ci模式必填,app token
appToken: {{ .Values.appSecret.bk_repo }}
## bkrepo gateway service配置
service:
type: NodePort
nodePort: 30025
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
# 修改 开始 =======
cpu: 1000m
memory: 3000Mi
# 修改 结束 =======
auth:
## bcs account配置
bcs:
accessKey: "bk_bcs_app"
secretKey: "{{ .Values.appSecret.bk_bcs_app }}"
config:
## 指定realm类型,支持local/devops
realm: local
## realm 指定为devops配置
devops:
# bkci accountId in bkrepo
appId: bkdevops
# bkci appId set
appIdSet: bkdevops,bkrepo,codecc,bcs
# bcs appId
bcsAppId: bcs
# bkrepo appId
bkrepoAppId: bkrepo
# bkci auth server url
ciAuthServer: {{ .Values.bkDomainScheme }}://devops.{{ .Values.domain.bkDomain }}
# bkci auth token
ciAuthToken: {{ .Values.appSecret.bk_ci }}
helm:
enabled: true
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
# 修改 开始 =======
cpu: 1000m
memory: 3000Mi
# 修改 结束 =======
npm:
enabled: true
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
# 修改 开始 =======
cpu: 1000m
memory: 3000Mi
# 修改 结束 =======
pypi:
enabled: true
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
# 修改 开始 =======
cpu: 1000m
memory: 3000Mi
#修改 结束 =======
# 新加 开始 =======
docker:
enabled: true
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1000m
memory: 3000Mi
generic:
enabled: true
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1000m
memory: 3000M
fs-server:
enabled: true
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1000m
memory: 3000M
job:
enabled: true
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1000m
memory: 3000M
opdata:
enabled: true
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1000m
memory: 3000M
replication:
enabled: true
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1000m
memory: 3000M
# 新加 结束 =======
repository:
config:
# 软删除后,清理并释放磁盘空间的间隔时间
deletedNodeReserveDays: 0
# 新加 开始 =======
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1500m
memory: 3000M
# 新加 结束 =======
最后安装成功
安装成功后,电脑配置hosts(10.16.34.37 bkce7.jinrui.org),浏览器访问,可以看到如下的效果
安装saas
curl -sSf https://bkopen-1252002024.file.myqcloud.com/ce7/7.1-beta/bkdl-7.1-beta.sh | bash -s -- -ur latest saas
部署节点管理:
scripts/setup_bkce7.sh -i nodeman
部署流程服务:
scripts/setup_bkce7.sh -i itsm
部署标准运维:
scripts/setup_bkce7.sh -i sops
我在这个过程中,按社区文档的操作可正常完成安装,没有碰到问题。
安装容器平台
https://bk.tencent.com/docs/document/7.0/253/69746
cd ~/bkce7.1-install/blueking
helmfile -f 03-bcs.yaml.gotmpl sync
# 在admin桌面添加应用,也可以登录后自行添加。
scripts/add_user_desktop_app.sh -u "admin" -a "bk_bcs"
# 设为默认应用。
scripts/set_desktop_default_app.sh -a "bk_bcs"
在这个过程中,碰到的问题是bcs-services-stack-app这个pod无法正常进入Running状态,经排查是因为内存限额过小导致,直接修改bcs-services-stack-app这个deployment中的内存限额,注意:该deployment中的pod有多个容器,我这里是每个容器都进行了修改。
kubectl edit deployment bcs-services-stack-app -n bcs-system
我这里是对这个deployment的中的所有容器的resources.limits都修改成如下的:
resources:
limits:
cpu: "4"
memory: 6Gi
requests:
安装监控日志
https://bk.tencent.com/docs/document/7.0/253/69742 我在这个过程中,按社区文档的操作可正常完成安装,没有碰到问题。
总体感受
相比之前安装7.1之前的版本,安装7.1版本的过程顺畅很多,社区应该是花了很大的人力物力去完善了脚本