版本:v26.09

cluster-api-provider-bke配置参数 ​

常见配置场景速查 ​

表1 常见配置场景速查表

配置场景主要配置项参考章节
通过bke init --file/-f编写BKECluster YAML。metadata.name、spec.clusterConfig.*、spec.controlPlaneEndpoint.*本文BKECluster CRD配置;命令行flag见bkeadm配置参数。
配置集群版本、镜像仓库、系统包源和NTP。spec.clusterConfig.cluster.*、spec.clusterConfig.customExtra{}本文BKECluster CRD配置、customExtra。
配置addon及其参数。spec.clusterConfig.addons[]、addons[].param本文addons[].param。
声明目标节点和SSH连接信息。metadata.name、spec.ip、spec.username、spec.password、spec.role[]本文BKENode CRD。
自定义kubelet/containerd二进制组件配置(KCT/CCT)。spec.KubeletConfigRef、spec.clusterConfig.cluster.containerdConfigRef本文KCT与CCT配置与引用;字段详解与示例见二进制组件自定义配置。
覆盖containerd服务、registry或脚本配置。ContainerdConfig.spec.service.*、spec.main.*、spec.registry.*、spec.script.*本文ContainerdConfig CRD。
覆盖kubelet配置、systemd service、额外文件或命令。KubeletConfig.spec.kubeletConfig{}、spec.kubeletService.*、spec.files[]、spec.commands[]本文KubeletConfig CRD。
调整控制器行为或排查升级流程。BKECluster注解、Cluster API注解、升级相关注解本文注解。

cluster-api-provider-bke ​

BKEControllerManager运行参数 ​

表2 BKEControllerManager command配置项表

配置项名称缺省值说明设置方式
--metrics-bind-address0metrics侦听地址;部署YAML覆盖为:8080,非必填。flag/YAML
--health-probe-bind-address8081健康检查侦听地址,非必填。flag
--health-probe-schemehttp健康检查协议,非必填;此处为代码默认值,支持https(启用后启动独立HTTPS服务,监听--health-probe-port端口,使用证书/etc/kubernetes/tls-server.crt/tls-server.key);部署YAML可覆盖,如v1.4.3版本清单即覆盖为https。flag
--health-probe-port9444HTTPS健康检查端口,非必填。flag
--leader-electfalseleader election开关;controller_manager_config.yaml中为true,非必填。flag/YAML
--webhook-cert-dir/tmp/k8s-webhook-server/serving-certs/webhook TLS证书目录;需与Deployment中bke-webhook-secret的挂载路径/tmp/k8s-webhook-server/serving-certs一致,非必填。flag
--webhook-port9443webhook端口,非必填。flag
--webhook-host无webhook host,非必填。flag
--bke-cluster-concurrency10BKECluster并发reconcile数,非必填。flag
--bke-machine-concurrency10BKEMachine并发reconcile数,非必填。flag
--enable-internal-updatefalse内部更新开关,非必填。flag
--oci-digest-check-interval300UpgradePath OCI digest检查周期,秒,非必填。flag
--oci-registry-username无OCI registry用户名,非必填。flag
--oci-registry-password无OCI registry密码,非必填。flag
--oci-registry-insecure-skip-verifytrueOCI拉取跳过TLS校验,非必填。flag
--enable-oci-digest-monitortrueUpgradePath digest monitor开关,非必填。flag
--release-cache-dir/var/lib/bke/release-cacherelease image bundle本地缓存目录,非必填。flag/hostPath
--helm-component-supportfalse全局启用yaml/helm组件执行路径;集群注解cvo.openfuyao.cn/helm-component存在时以注解为准,非必填。flag/YAML
--client-qps50Kubernetes API 客户端每秒请求数上限。flag
--client-burst100Kubernetes API 客户端瞬时请求峰值。flag
--client-config-file/etc/bke/client-config.yaml客户端配置限流文件路径, 可配置 qps、burst。flag

表3 BKEControllerManager env配置项表

配置项名称缺省值说明设置方式
env.containertrue标识容器运行,非必填。YAML
env.OLOGGER_CONFIG/etc/openFuyao/ologger/ologger.yaml日志配置路径,非必填。YAML/env
env.OLOGGER_PATH/var/log/openFuyao/$(POD_NAME).log日志文件路径,非必填。YAML/env

BKECluster CRD配置 ​

通过bke init --file/-f <BKECluster YAML>使用这些配置时,请同时参考bkeadm配置参数中bke init的flag说明。

说明 说明:

  • BKECluster(kubectl 短名 bc)描述待创建集群的版本、仓库、网络、addon、kubelet/containerd 引用等。常用命令:kubectl get bc -A、kubectl edit bc -n <命名空间> <名称>、kubectl describe bc -n <命名空间> <名称>。
  • 下表「缺省值」列为 openFuyao 平台官方推荐配置(CRD 为空时由控制器/安装器填入的默认值)。自定义部署时,建议在确认业务约束后,优先沿用推荐值,仅按需覆盖仓库地址、节点网络、addon 参数等环境相关项。
  • 关联资源:KubeletConfig(kct)、ContainerdConfig(cct)的字段与引用方式见本文后续章节及二进制组件自定义配置。

表4 BKECluster CRD配置项表

配置项名称缺省值说明设置方式
metadata.creationTimestamp无创建时间;通常由Kubernetes写入,用户配置可不填,非必填。CRD YAML
metadata.namebke-clusterBKECluster资源名称,非必填。CRD YAML
metadata.namespacebke-clusterBKECluster所在命名空间,非必填。CRD YAML
spec.KubeletConfigRef.namebke-kubelet引用的KubeletConfig名称,非必填。CRD YAML
spec.KubeletConfigRef.namespacebke-kubelet引用的KubeletConfig命名空间,非必填。CRD YAML
spec.clusterConfig.addons[].name无addon名称,必填。CRD YAML
spec.clusterConfig.addons[].version无addon版本,必填。CRD YAML
spec.clusterConfig.addons[].param{}无addon扩展参数(detail),非必填。CRD YAML
spec.clusterConfig.addons[].block无是否阻塞等待addon安装完成,非必填。CRD YAML
spec.clusterConfig.cluster.agentHealthPort无bkeagent健康端口:1-65535,必填。CRD YAML
spec.clusterConfig.cluster.apiServer.extraArgs{}authorization-mode=Node,RBACapiserver额外命令行参数,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.certificatesDir/etc/kubernetes/pki证书目录,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.chartRepo.domaincr.openfuyao.cnchart repo域名,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.chartRepo.port443/40443chart repo访问端口;默认公网chart为443,非默认域名为40443,非必填;需要与实际chart repo服务端口一致,并避免与同一节点上的其他仓库服务端口冲突。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.chartRepo.prefixchartchart repo前缀,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.containerRuntime.cricontainerdCRI,支持containerd,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.containerRuntime.param{}cgroupDriver=systemd
containerd data-root=/var/lib/containerd
运行时扩展参数,如data-root、cgroupDriver,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.containerRuntime.runtimeruncOCI runtime,支持runc、richrunc、kata,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.containerdConfigRef.namebke-containerd引用的ContainerdConfig名称,必填。CRD YAML
spec.clusterConfig.cluster.containerdConfigRef.namespacebke-containerd引用的ContainerdConfig命名空间,必填。CRD YAML
spec.clusterConfig.cluster.containerdVersionv2.1.1containerd默认版本,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.controllerManager.extraArgs{}无controller-manager额外命令行参数,非必填。CRD YAML
spec.clusterConfig.cluster.etcd.dataDir/var/lib/openFuyao/etcdetcd数据目录,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.etcdVersionv3.6.7-of.1etcd默认版本,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.httpRepo.domainhttp.bocloud.k8s系统包源域名,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.httpRepo.ip无系统包源IP,必填。CRD YAML
spec.clusterConfig.cluster.httpRepo.port40080系统包源端口,非必填;与镜像仓库、chart repo是不同服务端口,自定义时需要彼此避开;离线部署时与bke init的--yumRepoPort为同一服务端口。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.httpRepo.prefix无系统包源前缀,必填。CRD YAML
spec.clusterConfig.cluster.imageRepo.domaindeploy.bocloud.k8s镜像仓库域名,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.imageRepo.ip无镜像仓库IP,必填。CRD YAML
spec.clusterConfig.cluster.imageRepo.port40443镜像仓库端口,非必填;与系统包源、chart repo是不同服务端口,自定义时需要彼此避开。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.imageRepo.prefixkubernetes镜像仓库前缀,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.kubelet.extraArgs{}无kubelet额外命令行参数,非必填。CRD YAML
spec.clusterConfig.cluster.kubelet.extraVolumes.hostPath/var/lib/kubeletkubelet额外挂载hostpath,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.kubelet.extraVolumes.namekubelet-root-dirkubelet额外挂载name,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.kubernetesVersionv1.34.3-of.1Kubernetes默认版本,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.networking.dnsDomaincluster.localService DNS域名后缀,决定集群内服务的完整DNS名称格式。例如某个Service是: kube-system/kube-dns默认完整域名就是:kube-dns.kube-system.svc.cluster.local,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.networking.podSubnet10.250.0.0/16Pod CIDR,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.networking.serviceSubnet10.96.0.0/16Service CIDR,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.ntpServer无NTP服务器,必填。CRD YAML
spec.clusterConfig.cluster.openFuyaoVersionv26.09openFuyao默认版本,非必填。CRD YAML,CRD为空时默认
spec.clusterConfig.cluster.scheduler.extraArgs{}无scheduler额外命令行参数,非必填。CRD YAML
spec.clusterConfig.customExtra{}无扩展参数,供模板/插件读取(更详细的说明),非必填。CRD YAML
spec.controlPlaneEndpoint.host无控制面访问入口host,必填。CRD YAML
spec.controlPlaneEndpoint.port无控制面访问入口port,必填。CRD YAML
spec.pause无暂停reconcile,非必填。CRD YAML
spec.resetfalse设为 true 时触发该 BKECluster 的删除调谐流程。彻底清理目标节点时须同时将注解 bke.bocloud.com/ignore-target-cluster-delete 设为 "false"。操作步骤见集群卸载。CRD YAML

addons[].param ​

bkeadm默认生成的addon:

表5 bkeadm默认addon参数表

addon name默认版本bkeadm默认param备注
kubeproxyKubernetes版本对应目录,例如v1.34.3-of.1clusterNetworkMode缺省值:calico。
calicov3.31.3calicoMode
ipAutoDetectionMethod
allowTypha
typhaReplicas
缺省值:
calicoMode=vxlan
ipAutoDetectionMethod=skip-interface=nerdctl*
allowTypha=false
typhaReplicas=1。
corednsv1.12.2-of.1EnableAntiAffinitytrue/false
cluster-apiv1.4.3manage
offline
sandbox
replicas
containerdVersion
openFuyaoVersion
manifestsVersion
providerVersion
ntpServer
healthPort
openfuyao-system-controllerv26.9.0helmRepo
tagVersion

常用的addon名称和参数:

表6 常用addon参数表

addon name采用版本组件专属/可覆盖param key备注
nodelocaldnsv1.26.4clusterDNS
DNSserver
domain
localdns
注意是domain,不是dnsDomain。
numa-affinity-packagev0.0.2openfuyaoRepoNUMA affinity。
redis6.1.12nodeselectorkey名按模板小写。
victoriametrics-controllerlatestgrafanaNodePort
useVMSingle
kubeStateMetricsAutoSharding
kubeStateMetricsCpuCount
kubeStateMetricsMemorySize
kubeStateMetricsReplicaCount
vmAgentAllowStatefulSet
vmAgentCpuCount
vmAgentMemorySize
vmAgentReplicaCount
vmAgentScrapeInterval
vmAgentShareCount
vmAgentStorageSize
vmAlertCpuCount
vmAlertMemorySize
vmAlertReplicaCount
vmAlertManagerCpuCount
vmAlertManagerMemorySize
vmAlertManagerReplicaCount
vmClusterReplicationFactor
vmClusterRetentionPeriod
vmInsertCpuCount
vmInsertMemorySize
vmInsertReplicaCount
vmSelectCpuCount
vmSelectMemorySize
vmSelectReplicaCount
vmSelectStorageSize
vmSingleStorageSize
vmStorageCPUCount
vmStorageMemorySize
vmStorageReplicaCount
vmStorageStorageSize
webhook会为缺失项补缺省值,并校验部分replica/share关系。

spec.clusterConfig.customExtra{} ​

表7 customExtra配置项表

配置项名称缺省值说明设置方式
customExtra.chartRepoPort38080本地chart repo端口,非必填;与customExtra.imageRepoPort、customExtra.yumRepoPort分别对应不同本地服务,自定义时需要彼此避开。CLI派生/YAML
customExtra.clusterapi26.9.0cluster-api-provider-bke版本,非必填。CLI派生/YAML
customExtra.containerdcontainerd-v2.1.1-linux-{.arch}.tar.gzcontainerd安装包模板名,非必填。版本物料/YAML
customExtra.domaindeploy.bocloud.k8s镜像仓库域名,非必填。CLI派生/YAML
customExtra.host无启动节点IP,非必填。生成环境/YAML
customExtra.imageRepoPort40443本地镜像仓库端口,非必填;与chart repo、yum/http repo端口相互独立,自定义时需要彼此避开。CLI派生/YAML
customExtra.nfsserverpath/NFS服务路径,非必填。代码默认/YAML
customExtra.onlineImage无在线安装镜像,非必填。CLI派生/YAML
customExtra.otherChart无私有chart repo地址,非必填。CLI派生/YAML
customExtra.otherChartIp无私有chart repo解析IP,非必填。生成逻辑/YAML
customExtra.otherRepo无私有镜像仓库,非必填。CLI派生/YAML
customExtra.otherRepoIp无私有镜像仓库解析IP,非必填。生成逻辑/YAML
customExtra.otherSource无私有系统包源,非必填。CLI派生/YAML
customExtra.yumRepoPort40080本地系统包源(HTTP 仓)服务端口,非必填;与镜像仓库、chart repo端口相互独立,自定义时需要彼此避开;与Cluster CRD的spec.clusterConfig.cluster.httpRepo.port为同一服务端口。CLI派生/YAML

端口关系与冲突检查:customExtra.imageRepoPort、customExtra.chartRepoPort、customExtra.yumRepoPort通常由bke init的--imageRepoPort、--chartRepoPort、--yumRepoPort派生,分别对应本地镜像仓库、chart repo、yum/http repo三个独立服务。自定义时需要配置为不同端口,并避开Kubernetes API、console端口和宿主机已占用端口。bke init预检会检查端口是否已被宿主机占用,并过滤已存在的BKE管理容器端口;但不会显式检查这些参数之间是否重复。如果端口重复,可能在服务启动或端口发布阶段失败,需要根据日志中的端口占用信息调整后重试。

BKENode CRD ​

表8 BKENode CRD配置项表

配置项名称缺省值说明设置方式
metadata.creationTimestamp无创建时间;通常由Kubernetes写入,用户配置可不填,非必填。CRD YAML
metadata.labels.cluster.x-k8s.io/cluster-namebke-cluster关联的Cluster API集群名称,非必填。CRD YAML
metadata.name无BKENode资源名称,必填。CRD YAML
metadata.namespacebke-clusterBKENode所在命名空间,非必填。CRD YAML
spec.hostname无节点主机名,必填。CRD YAML
spec.ip无节点IP,必填。CRD YAML
spec.password无SSH密码,必填。CRD YAML
spec.port22SSH端口,示例为"22",非必填。CRD YAML
spec.role[]无节点角色,例如master/node、etcd、node,必填。CRD YAML
spec.usernamerootSSH用户名,非必填。CRD YAML
spec.controlPlane无节点级控制面组件覆盖配置,非必填。CRD YAML
spec.kubelet无节点级kubelet覆盖配置,非必填。CRD YAML
spec.labels[]无节点级标签覆盖配置,非必填。CRD YAML

ContainerdConfig CRD ​

表9 ContainerdConfig CRD配置项表

配置项名称缺省值说明设置方式
spec.configTypecombined配置类型,支持service/main/registry/combined,非必填。CRD YAML
spec.description无人类可读说明,必填。CRD YAML
spec.service.execStart无systemd ExecStart,必填。CRD YAML
spec.service.slicesystem.slicesystemd slice,非必填。CRD YAML
spec.service.killModeprocessKillMode,支持control-group/process/mixed/none,非必填。CRD YAML
spec.service.restartalwaysRestart策略,非必填。CRD YAML
spec.service.restartSec5s重启等待,非必填。CRD YAML
spec.service.startLimitInterval10s启动限流窗口,非必填。CRD YAML
spec.service.startLimitBurst5启动限流次数,非必填。CRD YAML
spec.service.timeoutStopSec90s停止超时,非必填。CRD YAML
spec.service.logging.standardOutputjournalstdout日志目标,非必填。CRD YAML
spec.service.logging.standardErrorjournalstderr日志目标,非必填。CRD YAML
spec.service.logging.syslogIdentifier无syslog标识,必填。CRD YAML
spec.service.logging.logLevelMax无最大日志级别,非必填。CRD YAML
spec.service.customExtra{}无service模板扩展变量,非必填。CRD YAML
spec.main.metricsAddress无containerd metrics地址,必填。CRD YAML
spec.main.root/var/lib/containerdcontainerd root,非必填。CRD YAML
spec.main.state/run/containerdcontainerd state,非必填。CRD YAML
spec.main.sandboxImageregistry.k8s.io/pause:3.9pause镜像,非必填。CRD YAML
spec.main.configPath/etc/containerd/certs.dregistry配置目录,非必填。CRD YAML
spec.main.rawTOML无原始TOML,提供后优先使用,非必填。CRD YAML
spec.registry.configPath/etc/containerd/certs.dregistry hosts配置目录,非必填。CRD YAML
spec.registry.configs{host}无registry host配置映射,非必填。CRD YAML
registryHost.host无单个registry host地址,必填。CRD YAML
registryHost.capabilities无单个registry host能力,非必填。CRD YAML
registryHost.skipVerify无单个registry host跳过校验,非必填。CRD YAML
registryHost.plainHTTP无单个registry host使用plain HTTP,非必填。CRD YAML
registryHost.insecure无单个registry host insecure设置,非必填。CRD YAML
registryHost.tls.caFile无TLS CA文件,必填。CRD YAML
registryHost.tls.certFile无TLS cert文件,必填。CRD YAML
registryHost.tls.keyFile无TLS key文件,必填。CRD YAML
registryHost.tls.insecureSkipVerify无TLS跳过证书校验,非必填。生产环境禁止设置为true,仅允许在临时排障或隔离测试环境短时使用。CRD YAML
registryHost.auth.username无registry认证用户名,必填。CRD YAML
registryHost.auth.password无registry认证密码,必填。CRD YAML
registryHost.auth.auth无registry auth字段,非必填。CRD YAML
registryHost.auth.identityToken无registry identity token,非必填。CRD YAML
registryHost.auth.registryToken无registry token,非必填。CRD YAML
registryHost.header无附加header,非必填。CRD YAML
registryHost.overridePath无path override,必填。CRD YAML
spec.script.content无shell脚本内容,非必填。CRD YAML
spec.script.path无shell脚本路径,非必填。CRD YAML
spec.script.args无shell脚本参数,非必填。CRD YAML
spec.script.interpreter/bin/bashshell脚本解释器,非必填。CRD YAML

KubeletConfig CRD ​

表10 KubeletConfig CRD配置项表

配置项名称缺省值说明设置方式
spec.kubeletConfig{}无kubelet原生配置map,RawExtension,非必填。CRD YAML
spec.kubeletService.enabled无是否创建kubelet service,非必填。CRD YAML
spec.kubeletService.serviceName无systemd service名称,必填。CRD YAML
spec.kubeletService.unit.description无Unit描述,非必填。CRD YAML
spec.kubeletService.unit.documentation无Unit文档,非必填。CRD YAML
spec.kubeletService.unit.after无Unit After依赖,非必填。CRD YAML
spec.kubeletService.unit.wants无Unit Wants依赖,非必填。CRD YAML
spec.kubeletService.unit.requires[]无Unit Requires依赖,非必填。CRD YAML
spec.kubeletService.service.execStart无kubelet启动命令,必填。CRD YAML
spec.kubeletService.service.restart无service重启策略,必填。CRD YAML
spec.kubeletService.service.startLimitInterval无service启动限流窗口,必填。CRD YAML
spec.kubeletService.service.restartSec无service重启等待时间,必填。CRD YAML
spec.kubeletService.service.environment无service环境变量,非必填。CRD YAML
spec.kubeletService.service.environmentFile无service环境变量文件,非必填。CRD YAML
spec.kubeletService.service.execStartPre无service前置启动命令,非必填。CRD YAML
spec.kubeletService.service.startLimitBurst无service启动限流次数,必填。CRD YAML
spec.kubeletService.service.killMode无service KillMode,必填。CRD YAML
spec.kubeletService.service.standardOutput无stdout日志输出设置,非必填。CRD YAML
spec.kubeletService.service.standardError无stderr日志输出设置,非必填。CRD YAML
spec.kubeletService.service.syslogIdentifier无syslog标识,必填。CRD YAML
spec.kubeletService.service.workingDirectory无service工作目录,非必填。CRD YAML
spec.kubeletService.service.user无service运行用户,非必填。CRD YAML
spec.kubeletService.service.group无service运行用户组,非必填。CRD YAML
spec.kubeletService.service.customExtra无service模板扩展变量,非必填。CRD YAML
spec.kubeletService.install.wantedBy无Install WantedBy配置,非必填。CRD YAML
spec.kubeletService.install.requiredBy[]无Install RequiredBy配置,非必填。CRD YAML
spec.files[].path无额外文件路径,非必填。CRD YAML
spec.files[].content无额外文件内容,非必填。CRD YAML
spec.files[].permissions无额外文件权限,非必填。CRD YAML
spec.files[].owner无额外文件属主,非必填。CRD YAML
spec.commands[].command无额外命令,非必填。CRD YAML
spec.commands[].args无额外命令参数,非必填。CRD YAML
spec.commands[].workingDir无额外命令工作目录,非必填。CRD YAML

KCT与CCT配置与引用 ​

KCT(KubeletConfig)和CCT(ContainerdConfig)是管理集群上的自定义资源,用于在节点引导阶段下发kubelet与containerd配置,无需登录节点手工编辑文件。

表11 KCT与CCT对照表

缩写CR类型API资源名kubectl短名BKECluster引用字段
KCTKubeletConfigkubeletconfigskctspec.KubeletConfigRef.name / namespace
CCTContainerdConfigcontainerdconfigscctspec.clusterConfig.cluster.containerdConfigRef.name / namespace

使用流程

  1. 在管理集群(与BKECluster同集群)创建KCT/CCT资源,填写spec配置。
  2. 在BKECluster YAML中通过引用字段指向对应资源;bke init生成的默认集群YAML已包含示例引用。
  3. 执行bke create cluster后,bkeagent在节点引导阶段读取并应用配置:
    • KCT:当KubeletConfigRef非空时,bkeagent从管理集群拉取KubeletConfig,依次处理spec.files[]、spec.kubeletConfig(写入/var/lib/kubelet/config.yaml)、spec.kubeletService(生成kubelet.service)和spec.commands[];同时自动启用变量替换(${EXPR|command|END})。
    • CCT:当containerdConfigRef非空时,bkeagent以namespace:name形式传入InstallContainerd插件,按spec.script → spec.service → spec.main → spec.registry顺序渲染containerd配置并重启服务。

KCT/CCT配置示例(BKECluster片段)

yaml
spec:
  KubeletConfigRef:
    name: bke-kubelet
    namespace: bke-kubelet
  clusterConfig:
    cluster:
      containerdConfigRef:
        name: bke-containerd
        namespace: bke-containerd

完整字段说明、变量替换示例和YAML样例见二进制组件自定义配置。

注解 ​

可配置的注解 ​

这些注解作用于BKECluster行为

表12 可配置注解表

key语义与取值缺省值和优先级
bke.bocloud.com/retry空值重试全部节点;非空值为逗号分隔的节点IP。key存在即触发;消费完成后删除。
bke.bocloud.com/deep-restore-nodetrue开启节点初始化和reset的深度恢复。默认true;注解优先,缺失时也按true,并默认写入true。
bke.bocloud.com/ignore-namespace-deletefalse才允许删除namespace;其他值均跳过。默认true;只有精确false才进入删除分支。
bke.bocloud.com/ignore-target-cluster-deletetrue表示删除管理面对象时不reset目标集群。默认true;只有精确false才继续清理目标节点。彻底卸载步骤见集群卸载总览。
bke.bocloud.com/node-boot-wait-timeoutGo duration,例如30s、10m、1h。默认10m;合法注解优先,缺失或解析失败回退10m。

关于retry注解使用的场景示例:

1、在EnsureBKEAgent阶段推送Agent失败。

2、在EnsureBKEAgent阶段推送Agent成功,但是对应节点上的bkeagent启动失败。

3、对应节点上安装kubelet失败。

4、对应节点上的域名解析服务失败导致镜像拉取失败。

遇到上述场景,用户可以在手动修复后执行如下命令添加retry注解,使失败节点重新执行后续阶段。

bash
# 注意:当retry注解的值为空值时,会重试所有节点。
kubectl annotate bc -n <集群命名空间> <集群名称>  bke.bocloud.com/retry="<失败节点ip>"

不支持配置的注解 ​

BKE内部状态、流程和运维注解(13个) ​

表13 BKE内部状态、流程和运维注解表

key语义与取值优先级和生命周期
bke.bocloud.com/collectd逗号分隔的base、agent,表示基础信息和agent信息已采集。控制器保留已有token,只追加缺失token。
bke.bocloud.com/last-update-configuration序列化后的对象JSON,作为上次配置快照。内部三方合并基线,不参与普通用户覆盖链。
bke.bocloud.com/status-record请求StatusManager记录一次当前状态,通常为空值。key存在即触发,记录后删除。
bke.bocloud.com/cluster-tracker-healthy-check-failed标记ClusterTracker健康检查失败并触发重新调谐。key存在即生效;恢复Ready后删除。
bke.bocloud.com/addon-boot-wait-timeout设计上表示addon启动等待超时。尚无生产读取或写入点,当前设置不会生效。
bke.bocloud.com/event标记这是BKE普通事件。每次AnnotatedEventf创建Event时写入空值。
bke.bocloud.com/complete与event一起标记某次流程完成事件。完成事件创建时写入空值。
bke.bocloud.com/bkeagent-listenercurrent表示agent侦听当前集群;bkecluster表示待切换到BKECluster。缺失默认写current;addon阶段写bkecluster,切换完成后流程恢复current。
bke.bocloud.com/cluster-frombke、bocloud、other表示集群来源。缺失或空值按bke;不同来源影响配置校验、完全管理和证书分发分支。
bke.bocloud.com/cluster-api-manager-appliedtrue表示004-manage.yaml已应用。只有目标版本存在、postprocess完成且该值不是true时才执行;成功后写true。
etcd-cert-dir暂存采集到的etcd证书目录。优先于Kubernetes certificatesDir;agent信息收集完成后删除。
deployAction固定写k8s_upgrade,供BOC兼容流程识别。缺失或值不是k8s_upgrade时覆盖为k8s_upgrade;代码中未见自动清理。
bke.openfuyao.cn/restartedAtRFC3339时间戳,用于改变PodTemplate并触发Deployment滚动重启。每次PatchDeploymentImage更新为当前时间。

ClusterVersion、升级路径和ReleaseImage注解(6个) ​

这些key是升级控制器之间的协议。参数说明与协作关系见后端声明式升级指导#控制器参数与升级注解。

表14 ClusterVersion、升级路径和ReleaseImage注解表

key语义与取值优先级和生命周期
cvo.openfuyao.cn/upgrade-ready当前升级hop的目标版本,也是声明式升级DAG的执行门闩。trim后非空即允许DAG执行;其值是当前hop,不一定是最终desiredVersion。
cvo.openfuyao.cn/cluster-version关联的ClusterVersion对象名称。与upgrade-ready同时写入和清理,不单独作为门闩。
cvo.openfuyao.cn/upgrade-path已选升级路径,例如v1->v2,v2->v3。与upgrade-ready同时写入和清理。
cvo.openfuyao.cn/helm-componenttrim后忽略大小写等于true时,为该集群启用yaml/helm组件执行器。注解存在时以注解值为准;缺失时回退到--helm-component-support全局flag。
config.openfuyao.com/oci-digest保存UpgradePath OCI镜像digest,并同步到status.lastDigest。每次从OCI刷新路径时覆盖为最新digest。
cvo.openfuyao.cn/bkecluster-name关联ReleaseImage与目标BKECluster名称。ReleaseImage控制器读取,用于解析和同步目标集群版本信息。

升级完成、取消或清理时,控制器会一起移除upgrade-ready、cluster-version和upgrade-path。

Cluster API标准注解(8个) ​

这些key的语义主要由上游Cluster API定义。本仓库负责设置、删除或消费它们,因此也属于实际注解面。

表15 Cluster API标准注解表

key语义与取值优先级和生命周期
cluster.x-k8s.io/cluster-name指明节点所属Cluster名称。与cluster-namespace同时存在才会映射到对应BKECluster。
cluster.x-k8s.io/cluster-namespace指明节点所属Cluster namespace。缺失时不进行对象映射。
cluster.x-k8s.io/pausedkey存在表示暂停Cluster API对象调谐。Cluster.spec.paused=true或对象存在此key均可暂停;value不参与判断。
cluster.x-k8s.io/delete-machine将带注解的机器设为优先删除候选。key存在即生效,通常写空值。
cluster.x-k8s.io/managed-by表示基础设施对象由外部系统管理,本控制器跳过映射。key存在即视为externally managed。
machine.cluster.x-k8s.io/certificates-expiryRFC3339证书到期时间;当前写为当前时间加100年。控制器生成,用于避免上游因短证书周期触发不必要行为。
controlplane.cluster.x-k8s.io/skip-kube-proxy要求KCP不负责升级kube-proxy。上游按key是否存在判断;BKE自己管理相关组件。
controlplane.cluster.x-k8s.io/skip-coredns要求KCP不负责升级CoreDNS。上游按key是否存在判断;BKE自己管理相关组件。

kubeadm、Kubernetes和静态Pod注解(7个) ​

表16 kubeadm、Kubernetes和静态Pod注解表

key语义与取值优先级和生命周期
kubeadm.kubernetes.io/etcd.advertise-client-urls通常为节点IP:2379,描述etcd client advertise URL。纳管阶段key已存在就不覆盖;master升级阶段缺失或空值时补齐。
bkeagent.bocloud.com/etcd.advertise-client-urls设计上也是etcd advertise client URL。当前生产代码实际使用上面的kubeadm key。
kubeadm.alpha.kubernetes.io/cri-socket保存init/join时使用的CRI socket。本仓库只有常量定义,没有生产读写点。
kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint描述API Server advertise address和端口。本仓库只有常量定义,没有生产读写点。
kubeadm.kubernetes.io/component-config.hash保存组件配置SHA256,用于检测用户修改。本仓库只有常量定义,没有生产读写点。
kubernetes.io/service-account.name指明该Secret属于哪个ServiceAccount,供Kubernetes token controller填充token。创建Secret时固定为目标ServiceAccount名称。
kubernetes.io/config.hash静态Pod manifest内容哈希,用于判断组件Pod是否已更新。BKE只读取并等待hash变化,不写入。

部署清单和生成工具注解(5个) ​

表17 部署清单和生成工具注解表

key作用配置和校验
controller-gen.kubebuilder.io/version记录生成CRD所用controller-gen版本。由controller-gen生成,仅用于溯源,不控制运行时业务逻辑。
cert-manager.io/inject-ca-from告诉cert-manager从namespace/name指定的Certificate/Secret来源注入caBundle。config中含Kustomize变量,构建后变成实际namespace/name;cert-manager未部署或注入器未运行时不会生效。
kubectl.kubernetes.io/default-containerkubectl logs/exec未指定容器时默认选择manager。固定字符串manager;仅影响kubectl使用体验。
prometheus.io/port告诉基于Prometheus注解发现的采集器使用8080端口。值是字符串8080;采集系统不启用注解发现时不会生效。
prometheus.io/scrapetrue表示允许基于注解发现的Prometheus抓取指标。由采集系统解释,Kubernetes本身不校验。