web-dev-qa-db-ja.com

K8Sダッシュボードにアクセスする正しい方法は何ですか?

質問

HTTPSを使用してダッシュボードにアクセスする方法が明確ではなく、明確なドキュメントを見つけることができません(kubectlプロキシを使用するように指示するだけです)。では、HTTPSを使用してダッシュボードにアクセスする方法は何ですか?

KubernetesダッシュボードGitHub 指示:

ショートカット http:// localhost:8001/ui は非推奨です。上記の完全なプロキシURLを使用してください。

K8Sダッシュボード推奨セットアップ または K8SダッシュボードFAQ プロキシなしでダッシュボードにアクセスする方法を教えてください。

HTTPS経由でダッシュボードにアクセスしています

/uiリダイレクトがHTTPSで機能しない理由は、コアリポジトリでまだ更新されていないためです。 https://github.com/kubernetes/kubernetes/pull/53046#discussion_r145338754 を追跡して、いつマージされるかを確認できます。おそらく、K8S1.8.3 +まで利用できません。

ダッシュボードへのアクセスに使用できる正しいリンクは、ドキュメントにあります。詳細については、ダッシュボードへのアクセスを確認してください。


ただし、 kubernetes-dashboard.yaml マニフェストは、ダッシュボードへのサービスエンドポイントを次のように定義します。

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

そして、割り当てられたクラスターIP(私の環境では)は以下のとおりです。

# kubectl get svc -n kube-system
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   ClusterIP   10.101.199.14   <none>        443/TCP         4h

10.101.199.14:443へのSSHトンネルを作成するだけで、それにアクセスすると( https:// localhost:8001 )ダッシュボードが表示されます。

enter image description here

したがって、基本的に、kubectlプロキシを使用してclusterに直接アクセスする必要はありませんIP:443はHTTPSでダッシュボードにアクセスする方法ですか?

K8Sダッシュボードの使用方法に関する最新の正確なドキュメントはどこにあるかを教えてください。

環境

# kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T21:07:38Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/AMD64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T20:55:30Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/AMD64"}
7
mon

私の知る限り、k8sダッシュボードを外部に公開したくないでしょう。k8sクラスターにアクセスするためのグラフィカルな方法であるため、k8s-dashboardのサービスタイプはLoadBalancerやNodePortではなくclusterIPです(Minikubeが使用します)。 )。

ダッシュボードを外部に公開せずにアクセスしたい場合は、質問で説明した2つの方法があります。

  • Kubectlプロキシ(kube-apiサーバーへのHTTPプロキシを作成します)
  • Kubectlポートフォワード(作成TCP k8sへのプロキシ-ダッシュボードポッド)
2
Suresh Vishnoi

Sureshによる提案をテストする時間はないので、今のところ以下で使用します。

Kubernetes-dashboardサービスアカウントトークンを取得します(指定されたcluster-adminロール)。

$ kubectl get secret -n kube-system | grep kubernetes-dashboard
kubernetes-dashboard-token-42b78                 kubernetes.io/service-account-token   3         1h

$ kubectl describe secret kubernetes-dashboard-token-42b78 -n kube-system
Name:         kubernetes-dashboard-token-42b78
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name=kubernetes-dashboard
              kubernetes.io/service-account.uid=36347792-ecdf-11e7-9ca8-06bb783bb15c

Type:  kubernetes.io/service-account-token

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

SSHトンネルを開始します。

ssh -L localhost:8001:172.31.4.117:6443 centos@<K8SServer>

Chrome ModHeader 拡張機能を使用してBearerトークンを送信します。

enter image description here

SSHトンネル(ローカルポート8001)を介してAPIサーバーエンドポイントにアクセスします。

https://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

enter image description here

2
mon

作成中にstatus-code 403およびcoredns-コンテナーがスタックしている場合は、クラスターにポッドネットワークアドオンをインストールしてみてください。

例:Calico:

kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml

ソース: https://kubernetes.io/fr/docs/setup/independent/create-cluster-kubeadm/

0
cchicote