web-dev-qa-db-ja.com

minkubeを使用しているときにKubernetes APIにアクセスする方法

Kubernetes APIを介してminikubeを使用してkubernetesクラスターをセットアップする正しい方法は何ですか?現時点では、kubernetesクラスターにアクセスできるポートが見つかりません。

15
KarateKid

ランニング minikube startは自動的にkubectlを構成します。

minikube ip minikubeがオンになっているIPを取得します。 APIサーバーは、デフォルトで8443で実行されます。


Update:APIサーバーに直接アクセスするには、生成されたカスタムSSL証明書を使用する必要があります。 minikubeによる。クライアント証明書とキーは通常、次の場所に保存されます:~/.minikube/apiserver.crtおよび~/.minikube/apiserver.key。リクエストを行うときは、HTTPSクライアントにそれらをロードする必要があります。

curlを使用している場合は、--cert そしてその --key証明書と鍵ファイルを使用するためのオプション。詳細は docs を確認してください。

12
iamnat

Minikubeの実行時にKubernetes APIにアクセスする最も簡単な方法は、

kubectl proxy --port=8080

次に、APIにアクセスできます

curl http://localhost:8080/api/

これにより、ブラウザーでAPIを参照することもできます。 minikubeを使用して開始

minikube start --extra-config=apiserver.Features.EnableSwaggerUI=true

次にkubectl proxyを起動し、ブラウザで http:// localhost:8080/swagger-ui / に移動します。

あなたはcanを直接カールしてKubernetes APIにアクセスします

curl --cacert ~/.minikube/ca.crt --cert ~/.minikube/client.crt --key ~/.minikube/client.key https://`minikube ip`:8443/api/

しかし、通常はそうすることに利点はありません。一般的なブラウザーはminikubeが生成する証明書に満足していないため、ブラウザーでAPIにアクセスするには、kubectl proxyを使用する必要があります。

16
Sven Marnach

私はたくさんの答えを調べましたが、それらの多くは間違っています。

その前に、IPとトークンが必要です。

IPの取得方法:minikube ip トークンの生成方法

$export secret=kubectl get serviceaccount default -o json | jq -r '.secrets[].name'

$kubectl get secret $secret -o yaml | grep "token:" | awk {'print $2'} |  base64 -D > token

注:base64では、macの場合は-Dを使用しますが、Linuxの場合は-dを使用します。

次に、正しいコマンドは次のとおりです。

#curl -v -k -H --cacert ~/.minikube/ca.crt -H "Authorization: Bearer $(cat ~/YOUR_TOKEN)"  "https://{YOUR_IP}:8443/api/v1/pods"
9
xichen

これらの手順は私にとってうまくいきました https://github.com/jenkinsci/kubernetes-plugin#configuration-on-minikube

そこに記載されている他の手順とともに、pfxファイルを生成してアップロードする必要がありました。

0