k8s 1.16安装metrics server
文章目录背景介绍步骤踩坑环节总结背景介绍这篇文章主要介绍下我在k8s1.16的环境下安装metrics server的过程,以及遭遇到的问题。步骤配置api-server组件中的启动命令,以让其支持 Aggregation 的API形式。vim/etc/kubernetes/manifests/kube-apiserver.yamlapiVersion: v1kind: Podmetadata:c
·
背景介绍
这篇文章主要介绍下我在k8s1.16的环境下安装metrics server的过程,以及遭遇到的问题。
步骤
- 配置api-server组件中的启动命令,以让其支持 Aggregation 的API形式。
vim /etc/kubernetes/manifests/kube-apiserver.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
- kube-apiserver
- --advertise-address=10.1.18.107
- --allow-privileged=true
- --authorization-mode=Node,RBAC
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --enable-admission-plugins=NodeRestriction
- --enable-bootstrap-token-auth=true
- --enable-aggregator-routing=true
- --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
- --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
- --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
- --etcd-servers=https://127.0.0.1:2379
- --insecure-port=0
- --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
- --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
- --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
- --requestheader-allowed-names=front-proxy-client
- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
- --requestheader-extra-headers-prefix=X-Remote-Extra-
- --requestheader-group-headers=X-Remote-Group
- --requestheader-username-headers=X-Remote-User
- --secure-port=6443
- --service-account-key-file=/etc/kubernetes/pki/sa.pub
- --service-cluster-ip-range=10.96.0.0/12
- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
....
主要修改某些启动参数即可,大部分的启动参数是默认都生成好的,主要需要修改的启动参数需要看官方文档,因为文档才是最新的。不跟着文档走,很多地方都有可能出错。我这个时候看文档,给的参数是这些。让自己的启动命令包含这些内容即可。
k8s配置聚合API官方文档
- 使用官方的metrics-server资源清单文件进行部署。
Metrics Server Github链接
根据Github主页上的README部署即可。一定要看文档,很多Blog写的内容都已经被废弃了,你跟着走会踩很多坑。
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
踩坑环节
- 镜像问题。这个很好解决。换个源就好了
MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/google_containers
docker pull ${MY_REGISTRY}/metrics-server-amd64:v0.3.6
docker tag ${MY_REGISTRY}/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6
docker rmi ${MY_REGISTRY}/metrics-server-amd64:v0.3.6
- 域名解析问题
如果你查看metrics server的日志,发现它表示无法解析hostname。那就需要解决这个问题。
# 查看容器日志命令,替换自己的pod名称
kubectl logs -f metric-metrics-server-697bd98b8b-kvg2d -n kube-system
# 报错
unable to fetch node metrics for node "master": no metrics known for node
# 这是告诉你他解析不出这个域名,主要的原因就在于测试环境中的域名,一般都是写在/etc/hosts文件中的。
这个问题一般有两种解决方式
- DNS 服务里面添加上 hostname 的解析,将xxxx替换成自己的IP地址即可。
$ kubectl edit configmap coredns -n kube-system
apiVersion: v1
data:
Corefile: |
.:53 {
errors
health
hosts { # 添加集群节点hosts隐射信息
x.x.x.x master
x.x.x.x node1
x.x.x.x node2
}
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
proxy . /etc/resolv.conf
cache 30
reload
}
kind: ConfigMap
metadata:
creationTimestamp: 2019-05-18T11:07:46Z
name: coredns
namespace: kube-system
- 修改部署metrics-server的yaml文件。
vim components.yaml
args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
新增两个命令行参数即可。
我在同时使用了两种方式后,部署成功。
3.TLS安全认证问题
如果部署后有证书问题,就需要在部署文件中声明加载相关内容。主要是使用--kubelet-insecure-tls
来跳过TLS安全认证。
总结
安装某个组件的时候,可以参考别人的安装过程,然后根据他安装过程所提到的知识点,去找到对应的官方doc,这才能够保证一定能够安装成功。命令和配置文件可能是不一样的,但知识点和思想都是相同的,官方文档才能保证你一定不出问题。还有就是报错这种东西就是疯狂套娃。。。。。
总结安装步骤
- 修改api-server的启动命令
- 修改metrics server的配置文件
- 为coredns添加相关的域名解析服务
- 遇到各种坑,请学会stack over flow 和github
更多推荐
已为社区贡献8条内容
所有评论(0)