导语 | 本文推选自腾讯云开发者社区-【技思广益 · 腾讯技术人原创集】专栏。该专栏是腾讯云开发者社区为腾讯技术人与宽泛开发者打造的分享交换窗口。栏目邀约腾讯技术人分享原创的技术积淀,与宽泛开发者互启迪共成长。本文作者是腾讯云原生架构师imroc。

本文次要介绍在腾讯云容器服务上如何装置KubeSphere及其踩坑与注意事项,心愿能够给对此方面感兴趣的开发者们一些教训和帮忙。

装置步骤具体装置步骤参考KubeSphere官网文档:在腾讯云TKE装置 KubeSphere。链接:https://kubesphere.io/zh/docs...

踩坑与注意事项

(一)cbs磁盘容量以10Gi为倍数

腾讯云容器服务默认应用CBS云硬盘作为存储,容量只反对10Gi的倍数,如果定义pvc时指定的容量不是10Gi的倍数,就会挂盘失败。装置KubeSphere时,批改下ClusterConfiguration中各个组件的volumeSize配置,确保是10Gi的倍数。

(二)卸载卡住与卸载不洁净导致重装失败

有时装置出问题,心愿卸载重装,应用KubeSphere官网文档从 Kubernetes上卸载KubeSphere中的kubesphere-delete.sh脚本进行清理,可能会呈现卡住的状况。通常是有finalizer的起因:

编辑资源删除相应finalizer即可。如果清理不洁净,重装还会报错:

通常是关联的一些MutatingWebhookConfiguration,ValidatingWebhookConfiguration,ClusterRole, ClusterRoleBinding等资源没清理,能够依据ks-installer日志定位并清理。

(三)监控不兼容导致看不到超级节点中Pod的监控

KubeSphere部署完后看工作负载的Pod列表,没有超级节点上Pod的监控数据:

是因为KubeSphere启用的监控,采集cadvisor监控数据的采集规定是,拜访所有节点的10250端口去拉监控数据,而超级节点的IP是个无奈路由的“假”IP,所以拉不到数据。

解决方案:

依照以下步骤减少自定义采集规定。

筹备secret yaml scrape-config.yaml:

apiVersion: v1kind: Secrettype: Opaquemetadata:  name: additional-scrape-configs  namespace: kubesphere-monitoring-systemstringData:  additional-scrape-configs.yaml: |-    - job_name: kubelet # eks cadvisor 监控,为兼容 ks 查问,固定 job 名为 kubelet      honor_timestamps: true      metrics_path: '/metrics'      params:        collect[]:        - 'ipvs'      scheme: http      kubernetes_sd_configs:      - role: pod      relabel_configs:      - source_labels: [__meta_kubernetes_pod_annotation_tke_cloud_tencent_com_pod_type]        regex: eklet        action: keep      - source_labels: [__meta_kubernetes_pod_phase]        regex: Running        action: keep      - source_labels: [__meta_kubernetes_pod_ip]        separator: ;        regex: (.*)        target_label: __address__        replacement: ${1}:9100        action: replace      - source_labels: [__meta_kubernetes_pod_name]        separator: ;        regex: (.*)        target_label: pod        replacement: ${1}        action: replace      - source_labels: [__meta_kubernetes_namespace]        separator: ;        regex: (.*)        target_label: namespace        replacement: ${1}        action: replace      metric_relabel_configs:      - source_labels: [__name__]        separator: ;        regex: container_.*        replacement: $1        action: keep      - target_label: metrics_path        replacement: /metrics/cadvisor        action: replace    - job_name: eks # eks cadvisor 之外的其它监控      honor_timestamps: true      metrics_path: '/metrics'      params:        collect[]:        - 'ipvs'      scheme: http      kubernetes_sd_configs:      - role: pod      relabel_configs:      - source_labels: [__meta_kubernetes_pod_annotation_tke_cloud_tencent_com_pod_type]        regex: eklet        action: keep      - source_labels: [__meta_kubernetes_pod_phase]        regex: Running        action: keep      - source_labels: [__meta_kubernetes_pod_ip]        separator: ;        regex: (.*)        target_label: __address__        replacement: ${1}:9100        action: replace      - source_labels: [__meta_kubernetes_pod_name]        separator: ;        regex: (.*)        target_label: pod        replacement: ${1}        action: replace      - source_labels: [__meta_kubernetes_namespace]        separator: ;        regex: (.*)        target_label: namespace        replacement: ${1}        action: replace      metric_relabel_configs:      - source_labels: [__name__]        separator: ;        regex: (container_.*|pod_.*|kubelet_.*)        replacement: $1        action: keep

创立secret:

kubectl apply -f scrape-config.yaml

批改Prometheus CR:

kubectl -n kubesphere-monitoring-system edit prometheuses.monitoring.coreos.com k8s

退出additionalScrapeConfigs:

spec:  additionalScrapeConfigs:    key: additional-scrape-configs.yaml    name: additional-scrape-configs

个别是kubesphere的chart包不欠缺,crd没装残缺,能够手动装一下:

kubectl apply -f https://raw.githubusercontent.com/kubesphere/notification-manager/master/config/bundle.yaml

参考: https://kubesphere.com.cn/for...

如果你是腾讯技术内容创作者,腾讯云开发者社区诚邀您退出支付礼品,助力职级降职。