乐趣区

关于运维:单台机器安装体验蓝鲸71

本文来自腾讯蓝鲸智云社区用户:donkey

应用一台服务器,既是 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

装置蓝鲸 7.1

整个过程都是依据社区文档 https://bk.tencent.com/docs/document/7.0/253/69744
这里次要记录我在这个过程中碰到的问题,具体的装置过程以社区文档为准

装置根底套餐

# 下载蓝鲸 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 模式:部署在蓝鲸 paas 上
  deployMode: saas
  ## 登陆校验模式,ticket or token or ci
  authMode: token
  ## ci 模式必填,蓝鲸 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 版本的过程顺畅很多,社区应该是花了很大的人力物力去欠缺了脚本

退出移动版