Kubernetes 监控平面组件 scheduler controller-manager proxy kubelet etcd

网友投稿 1157 2022-09-27

Kubernetes 监控平面组件 scheduler controller-manager proxy kubelet etcd

Kubernetes 监控平面组件 scheduler controller-manager proxy kubelet etcd

scheduler  暴露10251端口

简介

Kubernetes 调度器是一个控制面进程,负责将 Pods 指派到节点上。 调度器基于约束和可用资源为调度队列中每个 Pod 确定其可合法放置的节点。 调度器之后对所有合法的节点进行排序,将 Pod 绑定到一个合适的节点。 在同一个集群中可以使用多个不同的调度器。

版本是1.19+,如果k8s版本是1.19这个版本,可以看到这些都是拒绝的,因为这些端口都没有暴露出来,所以在监控这些组件的时候,会发现监控不了。如何将这些端口暴露出来呢?

[root@master ~]# kubectl get csWarning: v1 ComponentStatus is deprecated in v1.19+NAME STATUS MESSAGE ERRORcontroller-manager Unhealthy Get "dial tcp 127.0.0.1:10252: connect: connection refused scheduler Unhealthy Get "dial tcp 127.0.0.1:10251: connect: connection refused etcd-0 Healthy {"health":"true"}

[root@master ~]# cd /etc/kubernetes/manifests/[root@master manifests]# lskube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml修改如下: - --port=0 #去掉这行 - --bind-address=192.168.100.5 #127.0.0.1修改为本机的ip地址

监听 --secure-port 端口的 IP 地址。 集群的其余部分以及 CLI/ Web 客户端必须可以访问关联的接口。 如果为空,将使用所有接口(0.0.0.0 表示使用所有 IPv4 接口,"::" 表示使用所有 IPv6 接口)。 如果为空或未指定地址 (0.0.0.0 或 ::),所有接口将被使用。

--bind-address string 默认值:0.0.0.0

已弃用: 在没有身份验证和鉴权的情况下不安全地为 HTTP 服务的端口。 如果为 0,则根本不提供 HTTP。请参见 --secure-port。 如果 --config 指定了一个配置文件,这个参数将被忽略。

--port int 默认值:10251

[root@master ~]# netstat -tpln | grep 10251tcp6 0 0 :::10251 :::* LISTEN 28249/kube-schedule

[root@master ~]# kubectl get csWarning: v1 ComponentStatus is deprecated in v1.19+NAME STATUS MESSAGE ERRORcontroller-manager Unhealthy Get "dial tcp 127.0.0.1:10252: connect: connection refused scheduler Healthy ok etcd-0 Healthy {"health":"true"}

- job_name: 'kubernetes-scheduler' scrape_interval: 5s static_configs: - targets: ['192.168.100.5:10251'] labels: app: kubernetes-scheduler

controller-manager  暴露10252端口

简介

Kubernetes 控制器管理器是一个守护进程,内嵌随 Kubernetes 一起发布的核心控制回路。 在机器人和自动化的应用中,控制回路是一个永不休止的循环,用于调节系统状态。 在 Kubernetes 中,每个控制器是一个控制回路,通过 API 服务器监视集群的共享状态, 并尝试进行更改以将当前状态转为期望状态。 目前,Kubernetes 自带的控制器例子包括副本控制器、节点控制器、命名空间控制器和服务账号控制器等。

[root@master manifests]# vim kube-controller-manager.yaml 修改如下: - --port=0 #去掉这行 - --bind-address=192.168.100.5 #127.0.0.1修改为本机的ip地址

让上面全部失效

systemctl restart kubelet

- job_name: 'kubernetes-controller-manager' scrape_interval: 5s static_configs: - targets: ['192.168.100.5:10252']

kube-proxy

可以看到kube-proxy还是绑定本机127.0.0.1 lo网卡上,怎么绑定到本机网卡呢

[root@master ~]# netstat -tpln | grep 10249tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 3122/kube-proxy You have new mail in /var/spool/mail/root[root@node1 ~]# netstat -tpln | grep 10249tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 3296/kube-proxy [root@node2 ~]# netstat -tpln | grep 10249tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 3897/kube-proxy

这里不能修改为具体的ip了,因为kube-proxy在每个节点都有,所以不能变为具体的IP

[root@master prometheus]# kubectl edit configmap kube-proxy -n kube-system metricsBindAddress: "0.0.0.0:10249"

修改之后保存,将这些pod删除掉

[root@master manifests]# kubectl delete pod kube-proxy-5zxsr -n kube-systempod "kube-proxy-5zxsr" deleted[root@master manifests]# kubectl delete pod kube-proxy-bwm6f -n kube-systempod "kube-proxy-bwm6f" deleted[root@master manifests]# kubectl delete pod kube-proxy-x7mb4 -n kube-systempod "kube-proxy-x7mb4" deleted

kubectl get pods -n kube-system | grep kube-proxy |awk '{print $1}' | xargs kubectl delete pods -n kube-system

[root@master ~]# netstat -tpln | grep 10249tcp6 0 0 :::10249 :::* LISTEN 740/kube-proxy [root@node1 ~]# netstat -tpln | grep 10249tcp6 0 0 :::10249 :::* LISTEN 7910/kube-proxy [root@node2 ~]# netstat -tpln | grep 10249tcp6 0 0 :::10249 :::* LISTEN 17547/kube-proxy

所以在安装好k8s之后,想要监控scheduler ,controller-manager,kube-proxy这些,最好按照上面步骤修改。修改之后重启kubelet和删除kube-proxy。(不要在业务已经跑起来的时候去做这些操作!)

- job_name: 'kubernetes-kube-proxy' scrape_interval: 5s static_configs: - targets: ['192.168.100.5:10249','192.168.100.6:10249','192.168.100.7:10249']

Etcd

生成一个etcd-certs,这个在部署prometheus需要

[root@master ~]# ps -ef | grep etcd--etcd-cafile=/etc/ssl/etcd/ssl/ca.pem --etcd-certfile=/etc/ssl/etcd/ssl/node-master.pem --etcd-keyfile=/etc/ssl/etcd/ssl/node-master-key.pem --etcd-servers=-n monitor create secret generic etcd-certs --from-file=/etc/ssl/etcd/ssl/node-master-key.pem --from-file=/etc/ssl/etcd/ssl/node-master.pem --from-file=/etc/ssl/etcd/ssl/ca.pem

volumeMounts: - mountPath: /etc/prometheus name: prometheus-config - name: localtime mountPath: /etc/localtime - name: etcd-certs mountPath: /var/run/secrets/kubernetes.io/k8s-certs/etcd/ volumes: - name: prometheus-config configMap: name: prometheus-config - name: alertmanager-config configMap: name: alertmanager-config - name: localtime hostPath: path: /usr/share/zoneinfo/Asia/Shanghai - name: etcd-certs secret: secretName: etcd-certs

- job_name: 'kubernetes-etcd' scheme: tls_config: ca_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/ca.pem cert_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/node-master.pem key_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/node-master-key.pem scrape_interval: 5s static_configs: - targets: ['192.168.100.5:2379']

kubesphere在使用etcd监控的步骤

⽣成etcd相关secret ,为etcd监控创建相关secret,注意替换第⼆条命令中的证书⽂件名称。

证书⽂件名称可通过 ps -ef|grep etcd 查找

查看:本案例为master01

--etcd-cafile=/etc/ssl/etcd/ssl/ ca.pem --etcd-certfile=/etc/ssl/etcd/ssl/node-master01.pem --etcd-keyfile=/etc/ssl/etcd/ssl/node-master01-key.pem --etcd-servers=kubectl create ns kubesphere-monitoring-system namespace/kubesphere-monitoring-system created

root@master01:~# kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs --from-file=etcd-client-ca.crt=/etc/ssl/etcd/ssl/ca.pem --from-file=etcd-client.crt=/etc/ssl/etcd/ssl/node-master01.pem --from-file=etcd-client.key=/etc/ssl/etcd/ssl/node-master01-key.pem #结果 secret/kube-etcd-client-certs created

etcd: monitoring: false # Enable or disable etcd monitoring dashboard installation. You have to create a Secret for etcd before you enable it. endpointIps: 192.168.10.2,192.168.10.3,192.168.10.4 # etcd cluster EndpointIps. It can be a bunch of IPs here. port: 2379 # etcd port. tlsEnable: true

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:“云原生”究竟是什么?“云原生应用”是什么?
下一篇:数据链路层 Vlan介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~