在亚马逊EKS的教程中,学习理解Kubernetes #03:度量与仪表板

首先

本記事は、以下の内容の続きになります。

    Amazon EKS のチュートリアルで Kubernetes を理解する #02 アプリのデプロイ

由于之前已经在k8s集群中部署了应用程序,
这一次,我们将尝试对集群和应用程序进行监控。

前提条件 (Qianti tiaojian)

    k8sのクラスタが作成されており、ワーカーノードが稼働していること。

構建 Kubernetes Metrics 服务器

Kubernetesには、メトリクスサーバー(metrics-server)というモノがあり、
これを利用することで、クラスタに登録された各種リソースの情報を簡単に取得できるようになります。

部署 Kubernetes Metrics Server

ここでは、最新版をダウンロードして、クラスタに登録を行います。

$ cd /Users/$USERNAME/MyWork/amazon-eks

$ DOWNLOAD_URL=$(curl -Ls "https://api.github.com/repos/kubernetes-sigs/metrics-server/releases/latest" | jq -r .tarball_url)

$ DOWNLOAD_VERSION=$(grep -o '[^/v]*$' <<< $DOWNLOAD_URL)

$ curl -Ls $DOWNLOAD_URL -o metrics-server-$DOWNLOAD_VERSION.tar.gz

$ mkdir metrics-server-$DOWNLOAD_VERSION

$ tar -xzf metrics-server-$DOWNLOAD_VERSION.tar.gz --directory metrics-server-$DOWNLOAD_VERSION --strip-components 1

$ kubectl apply -f metrics-server-$DOWNLOAD_VERSION/deploy/1.8+/
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

确认动作

您可以通过以下方式确认metrics-server的Deployment是否正在运行所需数量的Pod。

$ kubectl get deployment metrics-server -n kube-system
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
metrics-server   1/1     1            1           2m55s

Kubernetes Dashboard の構築

metrics-server単体では、メトリクスの可視化はされません。
メトリクスの可視化を行うために、Kubernetes ダッシュボード を構築します。

Kubernetes仪表板的部署

首先,从Kubernetes的GitHub存储库中获取公开的仪表板定义,并将其部署到集群中。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created

创建服务帐号/集群角色绑定。

デフォルトでは、Kubernetes ダッシュボードへのアクセスは制限されています。
そのため、管理者レベルのアクセス権限を使用してダッシュボードに安全に接続するために使用できるようにします。

创建一个名为「eks-admin-service-account.yaml」的文件。

$ touch eks-admin-service-account.yaml

在该文件中,我们定义了以下内容:
在这里,我们定义了服务帐号和名为eks-admin的集群角色绑定。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: eks-admin
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: eks-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: eks-admin
  namespace: kube-system

将上述内容部署到集群中。

$ kubectl apply -f eks-admin-service-account.yaml
serviceaccount/eks-admin created
clusterrolebinding.rbac.authorization.k8s.io/eks-admin created

连接到仪表盘

由于按照先前的步骤,创建了可以显示集群状态的管理员服务帐户,因此我们将使用此服务帐户连接到仪表板。

首先,我们需要获取服务账号的认证令牌。

$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')

请从下面的输出中复制 的值。
使用此令牌连接到仪表板。

Name:         eks-admin-token-jnn96
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: eks-admin
              kubernetes.io/service-account.uid: e9201e83-3454-11ea-bc0a-0e7ed5a45fb2

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      <authentication_token>

为了从本地环境访问仪表盘,开始 kubectl 代理。执行以下命令后,保持控制台处于运行状态,直到确认连接到仪表盘为止。

kubectl proxy

请在浏览器中打开以下链接,并访问仪表板的终端点。

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login
amazon-eks-dev04.jpg

此外,选择[令牌],然后将之前复制的的内容粘贴到[令牌]字段中,然后点击[登录]按钮。成功连接后,将显示如下的仪表盘界面。

amazon-eks-dev05.jpg

このダッシュボード画面から、ノードの状態や、PodやReplicaSetなどのワークロードの情報など、
各種のクラスタの情報を確認することができます。

总结

通过使用Kubernetes指标服务器/ Kubernetes仪表板,您可以轻松地确认集群配置和各种资源的状态等信息。如果您想要先了解集群的结构和操作方式,我认为您可以在查看仪表板屏幕的同时进行操作,这样您可以更高效地理解其内容。

广告
将在 10 秒后关闭
bannerAds