まず、マスターの構成を変更します
# マスターノードは
kubectl apply -f を実行します https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml# 删除pod
kubectl deletedeployment kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl deletedeployment dumpboard-metrics-scraper --namespace=kubernetes-dashboard# アクセスポートのマスターノードの実行を設定します
# type: ClusterIP type: NodePort Search /type
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboardに変更します#アクセス ポートを設定します
# ここでのポートは 443:30519/TCP、つまり 30519 です
kubectl get svc -A |grep kubernetes-dashboard
次に、vi ダッシュボード.yaml を作成します。
# Copyright 2017 The Kubernetes Authors.
#
# Apache License バージョン 2.0 (「ライセンス」) に基づいてライセンスされています。
# ライセンスに準拠する場合を除き、このファイルを使用することはできません。
# ライセンスのコピーは、
#
# http://www.apache.org/licenses/LICENSE-2.0で入手できます。
#
# 適用される法律で要求されたり、書面で同意されたりしない限り、
# ライセンスに基づいて配布されるソフトウェアは、 「現状のまま」を基本とし、
明示的か黙示的かを問わず、いかなる種類の保証や条件も伴いません。#ライセンスに基づく
許可と制限を規定する特定の言語については、 # ライセンスを参照してください。apiVersion: v1
種類: 名前空間
メタデータ:
名前: kubernetes-dashboard---
apiVersion: v1
種類: ServiceAccount
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
名: kubernetes-dashboard
名前空間: kubernetes-dashboard---
種類: サービス
api バージョン: v1
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
名: kubernetes-dashboard
名前空間: kubernetes-dashboard
仕様:
ポート:
- ポート: 443
targetPort: 8443
セレクター:
k8s-app: kubernetes-dashboard---
apiVersion: v1
種類: Secret
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
名: kubernetes-dashboard-certs
名前空間: kubernetes-dashboard
タイプ: Opaque---
apiVersion: v1
種類: シークレット
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
名: kubernetes-dashboard-csrf
名前空間: kubernetes-dashboard
タイプ: 不透明
データ:
csrf: ""---
apiVersion: v1
種類: Secret
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
名: kubernetes-dashboard-key-holder
名前空間: kubernetes-dashboard
タイプ: Opaque---
種類: ConfigMap
apiVersion: v1
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
名: kubernetes-dashboard-settings
名前空間: kubernetes-dashboard---
kind: ロール
apiVersion: rbac.authorization.k8s.io/v1
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
rules:
# ダッシュボードがダッシュボードの排他的シークレットを取得、更新、削除できるようにします。
- apiGroups: [""]
リソース: ["secrets"]
resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]
動詞: ["get", "update", "delete"]
# ダッシュボードが「kubernetes-dashboard-settings」構成マップを取得および更新できるようにします。
- apiGroups: [""]
リソース:
Verbs: ["get", "update"]
# ダッシュボードがメトリクスを取得できるようにします。
- apiGroups: [""]
リソース: ["services"]
resourceNames: ["heapster"、"dashboard-metrics-scraper"]
動詞: ["proxy"]
- apiGroups: [""]
リソース: ["services/proxy "]
resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"] 動詞: ["get"
]---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
label:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
rules:
# Metrics Scraper がメトリクス サーバーからメトリクスを取得できるようにします
- apiGroups: ["metrics. k8s.io"]
リソース: ["pods"、"nodes"]
動詞: ["get"、"list"、"watch"]---
apiVersion: rbac.authorization.k8s.io/v1
種類: RoleBinding
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
名: kubernetes-dashboard
名前空間: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
種類: ロール
名: kubernetes-dashboard
件名:
- 種類: サービスアカウント
名: kubernetes-dashboard
名前空間: kubernetes-dashboard---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
メタデータ:
name: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubernetes-dashboard
subject:
- kind: ServiceAccount
name: kubernetes-ダッシュボード
名前空間: kubernetes-dashboard---
種類: デプロイメント
apiVersion: apps/v1
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
名: kubernetes-dashboard
名前空間: kubernetes-dashboard
仕様:
レプリカ:
1reviationHistoryLimit: 10
セレクター:
matchLabels:
k8s-app: kubernetes-dashboard
テンプレート:
メタデータ:
ラベル:
k8s-app: kubernetes-dashboard
spec:
ノード名: k8s-master
コンテナー:
- 名前: kubernetes-dashboard
イメージ: kubernetesui/dashboard:v2.3.1
imagePullPolicy: 常に
ポート:
- コンテナポート: 8443
プロトコル: TCP
引数:
- --auto-generate-certificates
- --namespace=kubernetes-dashboard
# 次の行のコメントを解除して手動で Kubernetes API サーバーを指定します ホスト
# 指定しない場合、ダッシュボードは API の自動検出を試みます#サーバー
に接続します。デフォルトが機能しない場合にのみコメントを外してください。
# - --apiserver-host=http://my-address:port
volumeMounts:
- name: kubernetes-dashboard-certs
mountPath: /certs
# 実行ログを保存するディスク上のボリュームを作成する
- mountPath: /tmp
名前: tmp-volume
livenessProbe:
httpGet:
スキーム: HTTPS
パス: /
ポート: 8443InitialDelaySeconds
: 30
timeoutSeconds: 30
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsUser: 1001
runAsGroup: 2001
ボリューム:
- 名前: kubernetes-dashboard-certs
シークレット:
SecretName: kubernetes-dashboard-certs
- 名前: tmp-volume
emptyDir: {}
serviceAccountName: kubernetes-dashboard
nodeSelector:
"kubernetes.io/os": linux
# ダッシュボードをマスター許容範囲にデプロイする必要がない場合は、次の許容範囲をコメントします
:
- キー: node-role.kubernetes.io/master
効果: NoSchedule---
種類: サービス
api バージョン: v1
メタデータ:
ラベル:
k8s-app: ダッシュボード メトリックス スクレーパー
名: ダッシュボード メトリックス スクレーパー
名前空間: kubernetes-ダッシュボード
仕様:
ポート:
- ポート: 8000
ターゲット ポート: 8000
セレクター:
k8s-app: ダッシュボード-メトリクススクレーパー---
種類: デプロイメント
apiVersion: apps/v1
メタデータ:
ラベル:
k8s-app: ダッシュボード メトリックス スクレーパー
名: ダッシュボード メトリックス スクレーパー
名前空間: kubernetes-dashboard
仕様:
レプリカ:
1reviationHistoryLimit: 10
セレクター:
matchLabels:
k8s-app: ダッシュボード-metrics-scraper
テンプレート:
メタ
データ: ラベル:
k8s-app: ダッシュボード-メトリクス-スクレーパー
アノテーション:
seccomp.security.alpha.kubernetes.io/pod: 'ランタイム/デフォルト'
仕様:
ノード名: k8s-マスター
コンテナ:
- 名前:ダッシュボード-メトリクス-スクレーパー
イメージ: kubernetesui/metrics-scraper:v1.0.6
ポート:
- コンテナーポート: 8000
プロトコル: TCP
livenessProbe:
httpGet:
スキーム: HTTP
パス: /
ポート: 8000
初期遅延秒数: 30
タイムアウト秒数: 30
ボリュームマウント数:
- マウントパス: /tmp
名前: tmp-ボリューム
securityContext:
allowPrivilegeEscalation:falsereadOnlyRootFilesystem
:true
runAsUser:1001
runAsGroup:2001
serviceAccountName: kubernetes-dashboard
nodeSelector:
"kubernetes.io/os": linux
# ダッシュボードをマスター容認にデプロイする必要がない場合は、次の容認をコメントします
:
- キー: node-role.kubernetes.io/master
効果: NoSchedule
ボリューム:
- 名前: tmp-volume
emptyDir: {}
トークンを取得するには、dash.yaml を記述します
アクセス アカウントを作成し、yaml ファイルを準備します (vi dump.yaml)
apiVersion: v1
種類: ServiceAccount
メタデータ:
名前: 管理者ユーザーの
名前空間: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
種類: ClusterRoleBinding
メタデータ:
名前: 管理者ユーザーの
roleRef:
apiGroup: rbac.authorization。 k8s.io
種類: ClusterRole
名: クラスター管理者
サブジェクト:
- 種類: ServiceAccount
名: admin-user
名前空間: kubernetes-dashboard
申し込みとアクセス
#アクセス: https://cluster 任意の IP:ポート https://192.168.157.130:30519
#Apply
kubectl apply -f crash.yaml
トークンの取得
# トークンを取得する
kubectl -n kubernetes-dashboard シークレットを取得 $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{ {.data .トークン |base64decode}}"
最後に、トークンを使用して k8s ビジュアル コンソールにアクセスできます。