共计 3223 个字符,预计需要花费 9 分钟才能阅读完成。
导语 | 本文推选自腾讯云开发者社区 -【技思广益 · 腾讯技术人原创集】专栏。该专栏是腾讯云开发者社区为腾讯技术人与宽泛开发者打造的分享交换窗口。栏目邀约腾讯技术人分享原创的技术积淀,与宽泛开发者互启迪共成长。本文作者是腾讯云原生架构师 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: v1
kind: Secret
type: Opaque
metadata:
name: additional-scrape-configs
namespace: kubesphere-monitoring-system
stringData:
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…
如果你是腾讯技术内容创作者,腾讯云开发者社区诚邀您退出支付礼品,助力职级降职。