エージェントのインストール

Kube State Metrics

Kube-state-metrics (KSM) は、Kubernetes API サーバーをリッスンし、オブジェクトの状態に関するメトリクスを生成するシンプルなサービスです。メトリクスは、リッスンしているポート(デフォルトは 8080)の HTTP エンドポイント / メトリクスにエクスポートされます。

KSM のデプロイ

  1. レポジトリをクローンします。
  2. 以下のコマンドを使用します。
kubectl apply -f examples/standard

KSM が正常にデプロイされたか確認する

  1. サービスを確認します。
kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-state-metrics ClusterIP None <none> 8080/TCP,8081/TCP 17d
  1. ポッドを確認します。
kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
kube-state-metrics-74c958c8bc-cwzzz 1/1 Running 0 17d

サービスとポッドの両方が作成されると、KSM が正常にデプロイされます。

メトリクスサーバーのデプロイ

  1. 以下のコマンドを実行して、メトリクスサーバーを起動します。

Kubernetes v1.21 以降の場合:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml

Kubernetes v1.19-1.21 の場合:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml
  1. メトリクスサーバーの TLS を無効にするには、デプロイメントファイルを編集し、コンテナ引数の下に次の行を追加します。
---kubelet-insecure-tls=true
  1. 保存して終了します。

メトリクスサーバーが正常にデプロイされたことを確認する

ポッドが準備完了して実行中であることを確認します。

NAMESPACE NAME READY STATUS RESTARTS AGE
metrics-server metrics-server-57dddcd97f-bnq49 1/1 Running 0 26h
metrics-server metrics-server-57dddcd97f-z9hff 1/1 Running 0 26h

SixthSense Kubernetes エージェント

エージェントのデプロイ

  1. Docker イメージをダウンロードします。
  • docker login gitlab-registry.34.120.183.186.sslip.io
  • アーティファクトへのログイン情報とエージェントをダウンロードするための認証情報がオンボーディングチームより提供されます。
  • 最新バージョンを選択します。
  • docker pull gitlab-registry.34.120.183.186.sslip.io/sixthsense/sixthsense-mvn-dependency/sixthsense-kubernetes-agent:agent-version
note

インスタンスが企業プロキシより後ろにある場合、Docker pull は動作しません。企業プロキシ情報は https://docs.docker.com/network/proxy/#configure-the-docker-client URLより、Docker config に設定する必要があります。

  1. エージェントがメトリクスを取得できるように、clusterrole と clusterrolebinding を作成します。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: k8s-agent-cluster-role
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- get
- watch
- list
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: k8s-agent
name: k8s-agent
namespace: k8s-agent
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: k8s-agent-cluster-role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: k8s-agent-cluster-role
subjects:
- kind: ServiceAccount
name: k8s-agent
namespace: k8s-agent

以下のコマンドを実行します。

kubectl apply -f sixthsense-clusterrole.yml
  1. Docker イメージを使用し、デプロイメントを作成します。

デプロイメントファイルのサンプル: 名称:sixthsense-k8-deploy.yml

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: sixthsense-k8s-agent
name: sixthsense-k8s-agent
namespace: k8s-agent
spec:
replicas: 1
selector:
matchLabels:
app: sixthsense-k8s-agent
template:
metadata:
labels:
app: sixthsense-k8s-agent
spec:
containers:
- image: <sixthsense_agent_image>
name: sixthsense-kubernetes-agent
env:
- name: SS_AUTHENTICATION
value: <Auth_Token>
- name: SS_METRIC_URL
value: http://kube-state-metrics.kube-system.svc.cluster.local:8080/metrics #8081 & 8080 DEBUG
- name: SS_CADVISOR_URL
value: ""
- name: SS_LOGGING
value: debug
- name: SS_SERVICE_NAME
value: <name of the service>
- name: SS_SECURE
value: "false"
- name: SS_BACKEND
value: <Backend_URL>
- name: SS_DEVELOPMENT
value: "false"
- name: SS_NAMESPACES
value: kube-system #List of all namespaces to monitor
- name: SS_RESTART_MEMORY_LIMIT
value: "500"
- name: SS_RESTART_DURATION
value: "12"
resources:
requests:
memory: "500Mi"
cpu: "750m"
limits:
memory: "1Gi"
cpu: "1"
serviceAccount: sixthsense-k8s-agent
serviceAccountName: sixthsense-k8s-agent

以下のコマンドを実行します。

kubectl apply -f sixthsense-k8-deploy.yml
  1. ポッドステータスを確認します。
kubectl get po -n cadvisor
NAME READY STATUS RESTARTS AGE
sixthsense-k8s-agent-2mk5s43 1/1 Running 0 5m