在Amazon EKS集群上安装Kubernetes Metrics Server

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

之前的指南介绍了如何使用Amazon EKS服务在AWS上安装Kubernetes Cluster。实际上,这是在几分钟之内让您的Kubernetes集群在AWS上运行的最快,最简单的方法。设置过程相当自动化 eksctl 它在后台使用CloudFormation堆栈来引导具有Amazon Linux工作者计算机的正在运行的集群。

本教程将引导您完成在EKS集群上安装和配置Kubernetes Metrics Server的步骤。 Metrics Server是Kubernetes内置自动缩放管道的可扩展且高效的容器资源指标来源。从Kubelet收集资源指标,并将其发布到Kubernetes apiserver。 指标API水平吊舱自动定标器垂直吊舱自动定标器..

Metrics Server提供的功能:

  • 适用于大多数集群的单一部署
  • 可扩展支持多达5,000个节点的集群
  • 资源效率:Metrics Server每个节点使用0.5m CPU内核和4MB内存

在Amazon EKS集群上安装Kubernetes Metrics Server

在您的Amazon EKS集群上开始安装Kubernetes Metrics Server之前,请确保EKS集群正在运行。可以使用 eksctl 用于检查可用的EKS集群的命令。

$ eksctl get cluster
NAME			REGION
prod-eks-cluster	eu-west-1

如果本地有kubeconfig,请使用它来确保Kubernetes API服务器响应。

$ kubectl --kubeconfig=/Users/jkmutai/.kube/eksctl/clusters/prod-eks-cluster get nodes
NAME                                            STATUS   ROLES    AGE   VERSION
ip-192-168-138-244.eu-west-1.compute.internal   Ready       13h   v1.17.9-eks-4c6976
ip-192-168-176-247.eu-west-1.compute.internal   Ready       13h   v1.17.9-eks-4c6976

指标服务器要求

Metrics Server对群集和网络配置有特定要求。这些要求不是所有群集分发的默认要求。在使用Metrics Server之前,请确保您的群集分发支持这些要求。

如何在Amazon EKS集群上安装Kubernetes Metrics Server

将kubeconfig保存在环境变量中。

export KUBECONFIG=/Users/jkmutai/.kube/eksctl/clusters/prod-eks-cluster

确保无需手动将路径传递到kubeconfig文件即可运行kubectl命令。

$ kubectl get nodes
NAME                                            STATUS   ROLES    AGE   VERSION
ip-192-168-138-244.eu-west-1.compute.internal   Ready       13h   v1.17.9-eks-4c6976
ip-192-168-176-247.eu-west-1.compute.internal   Ready       13h   v1.17.9-eks-4c6976

Metrics Server清单可在 指标服务器版本 使它们可通过URL安装:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml

这是正在创建的资源的输出。

clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
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
deployment.apps/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created

使用以下命令 公制服务器 部署正在运行所需数量的Pod。

$ kubectl get deployment metrics-server -n kube-system

NAME             READY   UP-TO-DATE   AVAILABLE   AGE
metrics-server   1/1     1            1           7m23s

$ kubectl get pods -n kube-system | grep metrics

metrics-server-7cb45bbfd5-kbrt7   1/1     Running   0          8m42s

确保Metrics服务器处于活动状态。

$ kubectl get apiservice v1beta1.metrics.k8s.io -o yaml

apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"apiregistration.k8s.io/v1beta1","kind":"APIService","metadata":{"annotations":{},"name":"v1beta1.metrics.k8s.io"},"spec":{"group":"metrics.k8s.io","groupPriorityMinimum":100,"insecureSkipTLSVerify":true,"service":{"name":"metrics-server","namespace":"kube-system"},"version":"v1beta1","versionPriority":100}}
  creationTimestamp: "2020-08-12T11:27:13Z"
  name: v1beta1.metrics.k8s.io
  resourceVersion: "130943"
  selfLink: /apis/apiregistration.k8s.io/v1/apiservices/v1beta1.metrics.k8s.io
  uid: 83c44e41-6346-4dff-8ce2-aff665199209
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: metrics-server
    namespace: kube-system
    port: 443
  version: v1beta1
  versionPriority: 100
status:
  conditions:
  - lastTransitionTime: "2020-08-12T11:27:18Z"
    message: all checks passed
    reason: Passed
    status: "True"
    type: Available

您还可以使用kubectl top命令访问Metrics API。这使得调试自动缩放流水线更加容易。

$ kubectl top --help
Display Resource (CPU/Memory/Storage) usage.

 The top command allows you to see the resource consumption for nodes or pods.

 This command requires Metrics Server to be correctly configured and working on the server.

Available Commands:
  node        Display Resource (CPU/Memory/Storage) usage of nodes
  pod         Display Resource (CPU/Memory/Storage) usage of pods

Usage:
  kubectl top [flags] [options]

Use "kubectl  --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).

要查看群集节点的资源使用情况,请运行以下命令:CPU /内存/存储:

$ kubectl top nodes
NAME                                            CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
ip-192-168-138-244.eu-west-1.compute.internal   50m          2%     445Mi           13%
ip-192-168-176-247.eu-west-1.compute.internal   58m          3%     451Mi           13%

类似的命令可以用于吊舱。

$ kubectl top pods -A
NAMESPACE     NAME                              CPU(cores)   MEMORY(bytes)
kube-system   aws-node-glfrs                    4m           51Mi
kube-system   aws-node-sgh8p                    5m           51Mi
kube-system   coredns-6987776bbd-2mgxp          2m           6Mi
kube-system   coredns-6987776bbd-vdn8j          2m           6Mi
kube-system   kube-proxy-5glzs                  1m           7Mi
kube-system   kube-proxy-hgqm5                  1m           8Mi
kube-system   metrics-server-7cb45bbfd5-kbrt7   1m           11Mi

您还可以访问use kubectl get –raw获取群集中所有节点的原始资源使用情况指标。

$ kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" | jq

{
  "kind": "NodeMetricsList",
  "apiVersion": "metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes"
  },
  "items": [
    {
      "metadata": {
        "name": "ip-192-168-176-247.eu-west-1.compute.internal",
        "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes/ip-192-168-176-247.eu-west-1.compute.internal",
        "creationTimestamp": "2020-08-12T11:44:41Z"
      },
      "timestamp": "2020-08-12T11:44:17Z",
      "window": "30s",
      "usage": {
        "cpu": "55646953n",
        "memory": "461980Ki"
      }
    },
    {
      "metadata": {
        "name": "ip-192-168-138-244.eu-west-1.compute.internal",
        "selfLink": "/apis/metrics.k8s.io/v1beta1/nodes/ip-192-168-138-244.eu-west-1.compute.internal",
        "creationTimestamp": "2020-08-12T11:44:41Z"
      },
      "timestamp": "2020-08-12T11:44:09Z",
      "window": "30s",
      "usage": {
        "cpu": "47815890n",
        "memory": "454944Ki"
      }
    }
  ]
}

本文介绍如何在EKS Kubernetes群集上配置水平Pod自动缩放器(HPA)。同时,请查看网站上其他与Kubernetes相关的文章。

如何强制删除Kubernetes命名空间

使用Kuberadm在Ubuntu 20.04上安装Kubernetes集群

如何使用NodePort安装Kubernetes仪表板

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

Sidebar