本文介绍在腾讯云容器服务上如何安装 KubeSphere 及其踩坑与注意事项。
具体安装步骤参考 KubeSphere 官方文档:在腾讯云 TKE 安装 KubeSphere。
腾讯云容器服务默认使用 CBS 云硬盘作为存储,容量只支持 10Gi 的倍数,如果定义 pvc 时指定的容量不是 10Gi 的倍数,就会挂盘失败。
安装 KubeSphere 时,修改下 ClusterConfiguration
中各个组件的 volumeSize
配置,确保是 10Gi 的倍数。
有时安装出问题,希望卸载重装,使用 KubeSphere 官方文档 从 Kubernetes 上卸载 KubeSphere 中的 kubesphere-delete.sh
脚本进行清理,可能会出现卡住的情况。
通常是有 finalizer 的原因:
编辑资源删除相应 finalizer 即可。
如果清理不干净,重装还会报错:
通常是关联的一些 MutatingWebhookConfiguration,ValidatingWebhookConfiguration, ClusterRole, ClusterRoleBinding 等资源没清理,可以根据 ks-installer 日志定位并清理。
KubeSphere 部署完后看工作负载的 Pod 列表,没有超级节点上 Pod 的监控数据:
是因为 KubeSphere 启用的监控,采集 cadvisor 监控数据的采集规则是,访问所有节点的 10250 端口去拉监控数据,而超级节点的 IP 是个无法路由的 “假” IP,所以拉不到数据。
解决方案:按照以下步骤增加自定义采集规则。
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
kubectl apply -f scrape-config.yaml
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/forum/d/7610-ks-330-ks-apiserver-crash/3
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。