6

プライベート ネットワーク (aws や Google クラウドではなく、プライベート サーバー) に kubernetes クラスターがあり、アクセスできるようにサービスを作成しましたが、クラスターの外部からアクセスできるようにする必要があり、そのために Ingress を作成しました。クラスターに ingress-nginx を追加しました。

これは、いくつかの試行を行った後に使用している YAML です。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: demo-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - host: k8s.local
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx
          servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: ClusterIP
  selector:
    name: nginx
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
  # selector:
    # app: nginx
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: echoserver
        image: nginx
        ports:
        - containerPort: 80

次のように yaml を実行しました: kubectl create -f file.yaml

/etc/hosts ファイルで、 k8s.localをマスター サーバーの IP に追加しました。

マスターサーバーでコマンドを実行しようとすると、「接続が拒否されました」というメッセージが表示されます: $ curl http://172.16.0.18:80/ -H 'Host: k8s.local'

肝心かどうかわかりませんが、クラスターにはFlannelを使用しています。

私の考えは、「hello world」を作成し、それをクラスターから公開することです!

このアクセスを許可するには、構成を変更する必要がありますか?


編集された YAML ファイル:

    apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: demo-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    # nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: k8s.local
    http:
      paths:
      - path: /teste
        backend:
          serviceName: nginx
          servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: LoadBalancer # NodePort
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: echoserver
        image: nginx
        ports:
        - containerPort: 80
4

5 に答える 5