web-dev-qa-db-ja.com

kubernetesサービス外部IP保留中

Nginxをkubernetesにデプロイしようとしています、kubernetesのバージョンはv1.5.2です、私は3つのレプリカでnginxをデプロイしました、YAMLファイルは以下です、

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80

そして今、私はその下のサービスを作成したので、ノードのポート30062でそのポート80を公開したいです。

kind: Service
apiVersion: v1
metadata:
  name: nginx-ils-service
spec:
  ports:
    - name: http
      port: 80
      nodePort: 30062
  selector:
    app: nginx
  type: LoadBalancer

このサービスは本来の状態では正常に機能していますが、端末上でもkubernetesダッシュボードだけでなく保留中として表示されています。 Terminal outputDash board status

この問題を解決するために私を助けてください。ありがとう….

57
Pankaj Jackson

カスタムのKubernetesクラスタを使用しているようです(minikubekubeadmなどを使用)。この場合、(AWSやGoogle Cloudとは異なり)LoadBalancerは統合されていません。このデフォルト設定では、 NodePort またはIngress Controllerのみを使用できます。 Ingress Controller を使えば、あなたのポッドに対応するドメイン名を設定することができます。

95
Javier Salmeron

minikubeのサービスにアクセスするには、次のコマンドを実行する必要があります。

minikube service [-n NAMESPACE] [--url] NAME

ここでより多くの情報: Minikube GitHub

22
Saket Jain

GCEまたはEKSを使用していない(kubeadmを使用した)場合は、サービスのYAMLにexternalIPsの仕様を追加できます。 eth0のように、あなたのノードのプライマリインターフェースに関連するIPを使うことができます。その後、ノードの外部IPを使用して、サービスに外部からアクセスできます。

...
spec:
  type: LoadBalancer
  externalIPs:
  - 192.168.0.10
21
toppur

あなたがミニキューブを使っているなら、魔法の命令があります!

$ minikube tunnel

うまくいけば、誰かがこれで数分を節約することができます。

参照リンク https://github.com/kubernetes/minikube/blob/master/docs /networking.md#loadbalancer-emulation-minikube-tunnel

19
Peter Zhou

私はkubeadmを使って単一ノードのk8sクラスタを作成しました。 PortForwardkubectl proxyを試したところ、外部IPが保留中と表示されました。

$ kubectl get svc -n argocd argocd-server
NAME            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
argocd-server   LoadBalancer   10.107.37.153   <pending>     80:30047/TCP,443:31307/TCP   110s

私の場合、私はこのようなサービスにパッチを当てました:

kubectl patch svc <svc-name> -n <namespace> -p '{"spec": {"type": "LoadBalancer", "externalIPs":["172.31.71.218"]}}'

この後、パブリックIPを介してサービスを開始しました

$ kubectl get svc argo-ui -n argo
NAME      TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
argo-ui   LoadBalancer   10.103.219.8   172.31.71.218   80:30981/TCP   7m50s
7

NodePortを使用します。

kubectl run user-login --replicas = 2 --labels = "run = user-login" --image = kingslayerr/teamproject:version2 --port = 5000

kubectlはデプロイメントを公開しますuser-login --type = NodePort --name = user-login-service

kubectl describe services user-login-service(ポートを書き留めます)

kubect cluster-info(IP->マスターが稼働しているIPを取得)

あなたのサービスは(IP):(ポート)でアクセス可能です

1
Shubham Sawant

同じ問題:

os> kubectl svcを入手するsabertooth-wordpress

名前タイプクラスタIP外部IPポート
right-sabertooth-wordpressLoadBalancer 10.97.130.7 "保留中" 80:30454/TCP、443:30427/TCP

os>ミニキューブサービス一覧

| ---------- ---------------------------- | ------ -------------------------- |

| NAMESPACE | NAME | URL |

| ------------- | ---------------------------- | ------ -------------------------- |

|デフォルトクベルネテスノードポートなし

|デフォルト右sabertooth-mariadb |ノードポートなし

|デフォルト右のワードプレス| ---(http://192.168.99.100:30454|

| | | http://192.168.99.100:30427 |

|キューブシステムキューブdnsノードポートなし

|キューブシステムティラーノードポートなし

| ---------- ---------------------------- | ------ -------------------------- |

それは、しかし、それを介してアクセス可能です---(http://192.168.99.100:30454

0
alfred