在亚马逊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
此外,选择[令牌],然后将之前复制的的内容粘贴到[令牌]字段中,然后点击[登录]按钮。成功连接后,将显示如下的仪表盘界面。
このダッシュボード画面から、ノードの状態や、PodやReplicaSetなどのワークロードの情報など、
各種のクラスタの情報を確認することができます。
总结
通过使用Kubernetes指标服务器/ Kubernetes仪表板,您可以轻松地确认集群配置和各种资源的状态等信息。如果您想要先了解集群的结构和操作方式,我认为您可以在查看仪表板屏幕的同时进行操作,这样您可以更高效地理解其内容。