3

基本的にURLで外部からNginx-helloページにアクセスしたいです。kubernetes と Nginx イングレスを実行している v-server へのサブドメインの (機能する) A レコードを作成しました: vps.my-domain.com

次のチュートリアルを使用して、CoreOS に kubeadm を介して単一ノード クラスターとして Kubernetes をインストールしました: https://kubernetes.io/docs/setup/independent/install-kubeadm/https://kubernetes.io/docs/setup/independent/ create-cluster-kubeadm/ 、およびhttps://kubernetes.github.io/ingress-nginx/deploy/#bare-metalを使用する nginx-ingress 。

また、次のエントリを /etc/hosts ファイルに追加しました。

31.214.xxx.xxx vps.my-domain.com

(xxx はサーバー IP の下 3 桁に置き換えられました)

次のファイルを使用して、デプロイ、サービス、イングレスを作成しました。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - name: http
          containerPort: 80
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  type: ClusterIP
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: http
  selector:
    run: my-nginx
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/ssl-redirect: "False"
spec:
  rules:
  - host: vps.my-domain.com
    http:
      paths:
      - backend:
          serviceName: my-nginx
          servicePort: 80

記述の出力:

core@vps ~/k8 $ kubectl describe ing
Name:             my-nginx
Namespace:        default
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                  Path  Backends
  ----                  ----  --------
  vps.my-domain.com
                           my-nginx:80 (<none>)
Annotations:
  kubectl.kubernetes.io/last-applied-configuration:      
{"apiVersion":"extensions/v1beta1",...}

  kubernetes.io/ingress.class:         nginx
  ingress.kubernetes.io/ssl-redirect:  False
Events:
  Type    Reason  Age                From                      Message
  ----    ------  ----               ----                      -------
  Normal  UPDATE  49m (x2 over 56m)  nginx-ingress-controller  Ingress default/my-nginx

nodeip とポート 80 を使用して Nginx の hello ページをカールできますが、VM の外部からは機能しません。Failed to connect to vps.my-domain.com port 80: Connection refused

私は何かを忘れましたか、それとも設定が間違っていますか? ヘルプやヒントをいただければ幸いです。

ありがとうございました

編集:

「vps.my-domain.com:30519」にアクセスすると、nginx のウェルカム ページが表示されます。ただし、構成でポート :80 を指定しました。get services の出力からポートを取得しました。

core@vps ~/k8 $ kubectl get services --all-namespaces | grep "my-nginx"
default         my-nginx               ClusterIP   10.107.5.14      <none>        80/TCP                       1h

追加することで、ポート:80でも動作するようになりました

externalIPs:
  - 31.214.xxx.xxx

my-nginx サービスに。しかし、これは機能するはずの方法ではありませんよね?kubernetes と ingress-nginx のチュートリアルと例では、externalIP なしで常に機能していました。また、イングレス ルールが機能しなくなりました (例: パスを /test に設定した場合)。

4

1 に答える 1