heapster
此模块,在1.8版本以后由metricserver替代
wget https://github.com/kubernetes/heapster/archive/v1.5.4.tar.gz
tar -zxf v1.5.4.tar.gz
cd heapster-1.5.4/
kubectl create -f deploy/kube-config/rbac/heapster-rbac.yaml ##授权
kubectl create -f deploy/kube-config/standalone/heapster-controller.yaml
#####说明问题点
kubectl get pod --namespace=kube-system
kubectl logs -f pods/heapster-75c97b8594-qgs5v -n kube-system ##查看日志信息
1 reflector.go:190] k8s.io/heapster/metrics/util/util.go:30: Failed to list *v1.Node: nodes is forbidden: User "system:serviceaccount:kube-system:heapster" cannot list nodes at the cluster scope
kubectl create -f deploy/kube-config/rbac/heapster-rbac.yaml
kubectl delete -f deploy/kube-config/standalone/heapster-controller.yaml
メトリックサーバ
metrics-server 替换heapster
生成证书:
cat > metrics-server-csr.json <<EOF
{
"CN": "aggregator",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "4Paradigm"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes metrics-server-csr.json | cfssljson -bare metrics-server
KUBE-apiserver、割り当てを増やす関連する構成を開きます
--requestheader-allowed-names=aggregator \
--requestheader-client-ca-file=/etc/kubernetes/ssl/ca.pem \
--requestheader-allowed-names=aggregator \
--requestheader-extra-headers-prefix=X-Remote-Extra- \
--requestheader-group-headers=X-Remote-Group \
--requestheader-username-headers=X-Remote-User \
--proxy-client-cert-file=/etc/kubernetes/ssl/metrics-server.pem \
--proxy-client-key-file=/etc/kubernetes/ssl/metrics-server-key.pem \
--enable-aggregator-routing=true \
--advertiseアドレス:フォーリンIP(kubernetesサービスバックエンドノードIP)アドバタイズapiserver;
--default- -toleration秒:ノードの異常閾値を、
--max- -requests-機内:リクエストに関連付けられた最大閾値;
--etcd- :;アクセスは、証明書とetcdサーバのアドレスをetcd
指定は秘密の暗号化に設定さetcd;:--experimental-暗号化プロバイダ-config設定
--bind-アドレス:HTTPSはIPではなく、127.0を聴きます。 ; 0.1は、そうでない場合には、セキュアポート6443の外にアクセスできない
HTTPSリスニング・ポート; --secretポート
--insecureポート= 0:オフリスニング非セキュアHTTPポート(8080);
--tls- -file:使用指定apiserver証明書、秘密キー、およびCAファイル;
--audit- :関連の監査戦略及び監査ログファイルを構成するパラメータ;
--client-CA-ファイル:クライアント(KUE-コントローラ・マネージャー、検証 KUBE-スケジューラ、kubelet、kube-を証明書を要求することによって行わプロキシなど);
--enableオンブートストラップAUTH-token-:kubeletブートストラップは、認証トークンを有効にします。
--requestheader-:に関するKUBE-apiserverアグリゲータ層構成パラメータ、プロキシクライアント&HPAが必要;
--requestheaderクライアント-CA-ファイル:署名--proxy-クライアント証明書ファイルと--proxy-クライアントキーの-file指定された証明書;メトリックアグリゲータが有効になっているときに使用される;
--requestheader-許可-名:空でない、値CN名--proxy-クライアント証明書ファイルの証明書のカンマで区切られた、「アグリゲータにここで設定「;
--service-アカウント・キー・ファイル:ServiceAccountトークン署名公開鍵ファイル、--service-アカウントのプライベート・キー-のKUBE-コントローラマネージャファイルを両方ともペア、秘密鍵ファイルを指定する。
--runtime真-config = API /全=:そのような自動スケーリング/ v2alpha1としてのAPIのすべてのバージョン、有効;
--authorizationモード=ノード、RBAC、 - AUTH =匿名偽する:オープンノードと許可RBACモデルを、不正な要求に対して;
--enable-プラグイン・入場番号:デフォルトのプラグインでいくつかを可能にする、
--allow-特権:コンテナの実行は特権権利を実行し、
--apiserver-COUNT = 3:apiserverインスタンスの数を指定します。
--event-TTL:指定イベント sの蓄積時間。
--kubelet-:指定した場合、HTTPSアクセスkubelet APIを使用して、ユーザ(kubernetesに上記ユーザkubernetes.pem証明書)RBACユーザ定義ルール、またはAPIアクセスkubeletを対応する証明書に必要なプロンプト不正;
--proxy-クライアント- *:使用される証明書にapiserverメトリック・サーバーへのアクセス;
--service-クラスタ-IP-範囲:サービスクラスタのIPアドレスを指定します。
--service-ノードのポート範囲:指定したポート範囲NodePort;
のKUBE-apiserver --requestheader-許可-名パラメータは、それ以外の場合は、フォローアップのアクセス許可メトリックを促すメッセージが表示されます、計量証明書のCNフィールドと一致する必要があります。
マシンがKUBE-apiserverのKUBE-プロキシを実行していない場合は、--enable-アグリゲータルーティング= trueパラメータを追加する必要があります。
--requestheader-XXX-関連のパラメータに、を参照してください。
https://github.com/kubernetes-incubator/apiserver-builder/blob/master/docs/concepts
https://docs.bitnami.com/kubernetes/how-to/configure-autoscaling-custom-metrics/
注意:
requestheader-client-ca-file 指定的 CA 证书,必须具有 client auth and server auth;
如果 --requestheader-allowed-names 为空,或者 --proxy-client-cert-file 证书的 CN 名称不在 allowed-names 中,则后续查看 node 或 pods 的 metrics 失败,提示:
###### Error from server (Forbidden): nodes.metrics.k8s.io is forbidden..
kube-controller-manager增加如下参数
--horizontal-pod-autoscaler-use-rest-clients=true
部署:
git clone https://github.com/kubernetes-incubator/metrics-server
cd metrics-server/deploy/1.8+/
修改metrics-server-deployment.yaml
imagePullPolicy: Always
command:
- /metrics-server
- --metric-resolution=30s
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
# cat resource-reader.yaml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: system:metrics-server
rules:
- apiGroups:
- ""
resources:
- pods
- nodes
- nodes/stats
- namespaces
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: system:metrics-server
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: metrics-server
namespace: kube-system
kubectl apply -f .
参考链接:
https://blog.51cto.com/blief/2416018
https://www.orchome.com/1203
https://www.jianshu.com/p/a89e1ee3d45e
https://blog.51cto.com/ylw6006/2114338
https://www.jianshu.com/p/d017fc44959e