17、kubernetes之资源指标API-metrics-server低版本安装

高版本留坑记录:

下载镜像:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server
依次下载6个镜像: wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/metrics-server/resource-reader.yaml
创建容器
[root@k8s-master part]# kubectl create -f .
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
configmap/metrics-server-config created
deployment.apps/metrics-server-v0.6.3 created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
pod容器起不来,主要有三个问题,
第一个:配置文件字段不存在
seccompProfile:需要注释
[root@k8s-master part]# vim metrics-server-deployment.yaml
    spec:
        # securityContext:
             # seccompProfile:
                # type: RuntimeDefault
第二个:镜像不存在
[root@k8s-node2 ~]# docker pull registry.k8s.io/metrics-server/metrics-server:v0.6.3 # 节点下载镜像
[root@k8s-node2 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.3
[root@k8s-node1 ~]# docker pull dregistry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
[root@k8s-node2 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.3 registry.k8s.io/metrics-server/metrics-server:v0.6.3
[root@k8s-node2 ~]# docker pull registry.cn-beijing.aliyuncs.com/minminmsn/addon-resizer:1.8.4
[root@k8s-node2 ~]# docker tag registry.cn-beijing.aliyuncs.com/minminmsn/addon-resizer:1.8.4 registry.k8s.io/autoscaling/addon-resizer:1.8.14
第三个:500报错
降级,不需要探测,需要回退。
==下载镜像:wget https://github.com/kubernetes/kubernetes/raw/release-1.21/cluster/addons/metrics-server/auth-delegator.yaml
==一个总的yaml:kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
修改镜像下载地址: metrics-server-deployment.yaml文件:registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.3.6
新版本各种坑,暂时没有解决。

=====================

低版本安装部署

参考文档:https://www.jianshu.com/p/262177fa9320

版本metrics-server-amd64:v0.3.3,addon-resizer:1.8.5

1.部署metrics-server 从v1.8开始,引入了新的功能,即把资源指标引入api,资源指标:metrics-server,自定义指标:prometheus,k8s-prometheus-adapter(把prometheus采集的数据转化成k8s可理解的数据).
新一代架构:

a.核心指标流水线:由kubelet、metrics-server以及由API server提供的api组成;cpu累计利用率、内存实时利用率、pod的资源占用率及容器的磁盘占用率;
b.监控流水线:用于从系统收集各种指标数据并提供终端用户、存储系统以及HPA,包含核心指标以及许多非核心指标,非核心指标不能被k8s所解析.
metrics-server是个api server,仅仅收集cpu利用率、内存利用率等.

metrics-server是个api server,仅仅收集cpu利用率、内存利用率等.
2、下载对应版本的metrics-server
[root@k8s-master metrics-server]# cat yamls.text
auth-delegator.yaml
auth-reader.yaml
metrics-apiservice.yaml
metrics-server-deployment.yaml
metrics-server-service.yaml
resource-reader.yaml
[root@k8s-master metrics-server]# for yml in `cat yamls.text`;do wget https://raw.githubusercontent.com/kubernetes/kubernetes/v1.15.12/cluster/addons/metrics-server/$yml;sleep 1;done
查看对应版本,并在节点上下载
[root@k8s-master metrics-server]# grep metrics-server-amd64 metrics-server-deployment.yaml
image: k8s.gcr.io/metrics-server-amd64:v0.3.3
[root@k8s-master metrics-server]# grep addon-resizer metrics-server-deployment.yaml
image: k8s.gcr.io/addon-resizer:1.8.5
[root@k8s-node1 ~]# docker pull mirrorgooglecontainers/metrics-server-amd64:v0.3.3
[root@k8s-node1 ~]# docker pull mirrorgooglecontainers/addon-resizer:1.8.5
3、报错处理
[root@k8s-master ~]# kubectl get podsmetrics-server-v0.3.3-549cc669c7-bj4cp -n kube-system -owide
error: the server doesn't have a resource type "podsmetrics-server-v0"
[root@k8s-master ~]# kubectl get pods metrics-server-v0.3.3-549cc669c7-bj4cp -n kube-system -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
metrics-server-v0.3.3-549cc669c7-bj4cp 1/2 CrashLoopBackOff 5 10m 10.244.1.95 k8s-node1 <none> <none>

[root@k8s-master ~]# kubectl describe pods metrics-server-v0.3.3-549cc669c7-bj4cp -n kube-system
Name: metrics-server-v0.3.3-549cc669c7-bj4cp
...
Warning BackOff 26s (x21 over 4m18s) kubelet, k8s-node1 Back-off restarting failed container
[root@k8s-master ~]# kubectl logs -f metrics-server-v0.3.3-549cc669c7-bj4cp -c metrics-server-nanny -n kube-system

ERROR: logging before flag.Parse: I0727 01:56:53.928225       1 pod_nanny.go:65] Invoked by [/pod_nanny --config-dir=/etc/config --cpu={{ base_metrics_server_cpu }} --extra-cpu=0.5m --memory={{ base_metrics_server_memory }} --extra-memory={{ metrics_server_memory_per_node }}Mi --threshold=5 --deployment=metrics-server-v0.3.3 --container=metrics-server --poll-period=300000 --estimator=exponential --minClusterSize={{ metrics_server_min_cluster_size }}]
invalid argument "{{ metrics_server_min_cluster_size }}" for "--minClusterSize" flag: strconv.ParseUint: parsing "{{ metrics_server_min_cluster_size }}": invalid syntax
Usage of /pod_nanny:
      --config-dir string      Path of configuration containing base resource requirements. (default "MISSING")
      --container string       The name of the container to watch. This defaults to the nanny itself. (default "pod-nanny")
      --cpu string             The base CPU resource requirement.

[root@k8s-master ~]# kubectl logs -f metrics-server-v0.3.3-549cc669c7-bj4cp -c metrics-server -n kube-system

...
E0727 01:58:56.286317       1 manager.go:111] unable to fully collect metrics: [unable to fully scrape metrics from source kubelet_summary:k8s-master: unable to fetch metrics from Kubelet k8s-master (192.168.1.203): Get http://192.168.1.203:10255/stats/summary/: dial tcp 192.168.1.203:10255: connect: connection refused, unable to fully scrape metrics from source kubelet_summary:k8s-node1: unable to fetch metrics from Kubelet k8s-node1 (192.168.1.202): Get http://192.168.1.202:10255/stats/summary/: dial tcp 192.168.1.202:10255: connect: connection refused, unable to fully scrape metrics from source kubelet_summary:k8s-node2: unable to fetch metrics from Kubelet k8s-node2 (192.168.1.201): Get http://192.168.1.201:10255/stats/summary/: dial tcp 192.168.1.201:10255: connect: no route to host]

4、修改配置项,重新生成pod

 需要修改的配置

[root@master metrics]# vim metrics-server-deployment.yaml

[root@master metrics]# vim resource-reader.yaml    增加  - nodes/stats

 

重新生成pod再次验证:
[root@k8s-master ~]# kubectl top no
error: metrics not available yet

此时需要启动proxy服务才生效,
[root@k8s-master files]# kubectl proxy --port=8080
Starting to serve on 127.0.0.1:8080

[root@k8s-master ~]# kubectl top no
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8s-master 335m 16% 735Mi 42%
k8s-node1 72m 7% 419Mi 48%
k8s-node2 <unknown> <unknown> <unknown> <unknown>
验证成功,metrics-server成功执行。
[root@k8s-master ~]# kubectl top no
[root@k8s-master ~]# kubectl top pod -n kube-system
验证api接口
[root@k8s-master ~]# kubectl api-versions |grep met
metrics.k8s.io/v1beta1
[root@k8s-master ~]# curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/nodes
[root@k8s-master ~]# curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/pods

posted @ 2019-05-28 14:36  wang_wei123  阅读(12654)  评论(0编辑  收藏  举报