インストールおよびメトリックheapsterのK8S

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

おすすめ

転載: blog.51cto.com/phospherus/2445753
おすすめ