オンプレミスの kubernates 502 不正なゲートウェイ

オンプレミスの kubernates 502 不正なゲートウェイ

こんにちは。kubernatesをインストールして設定しました。minikubeとkubeadmの両方で試しました。インストールしたもの:flannel、nginx-ingress-controller、metalLB、ngix-ingress-controllerサービスをloadBalancerに設定しました。

シンプルな WordPress アプリを公開しようとすると、常に 502 Bad Gateway が発生します (clusterIp または nodePort を使用)

OS: ubuntu 20.04 LTS、docker-ce、kubeadm、kubelt をインストール済み (公式サイト kubernates サイトのチュートリアル)

インストール手順私が従ったこと:Kube init:

kubeadm init --pod-network-cidr=10.244.0.0/16

kubectl taint nodes --all node-role.kubernetes.io/master-

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

フランネル:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

nginx

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/deploy.yaml

metallb: オンサイトチュートリアルに従う

ingress-nginx-controller サービスを LoadBalancer に変更し、externalIP を追加しようとしましたが、何も変わりません

これが私の yaml です: サービス

apiVersion: v1
kind: Service
metadata:
  labels:
    appcluster: kubernetes
    app: wordpress
  name: wordpress-service
spec:
  ports:
  - port: 80
    targetPort: 80
    name: http-port
  selector:
    app: wordpress
  type: ClusterIP

進入

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: wordpress-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - host: ethernial.com
      http:
        paths:
          - path: /?(.*)
            backend:
              serviceName: wordpress-service
              servicePort: 80

答え1

@Jakub のおかげで、metalLB の設定 (設定マップの作成) を忘れていたので、ingress-nginx-controller を loadBalancer が完璧に動作するように設定しました。

答え2

ここで何が間違っていたのかを明確にします。

MetalLBで述べたようにドキュメンテーション:

MetalLB は、構成されるまでアイドル状態のままです。これは、デプロイメントと同じ名前空間 (metallb-system) に configmap を作成してデプロイすることで実現されます。

例があるレイヤー2構成

レイヤー 2 モードは設定が最も簡単です。多くの場合、プロトコル固有の設定は必要なく、IP アドレスのみが必要です。

レイヤー 2 モードでは、IP をワーカー ノードのネットワーク インターフェイスにバインドする必要はありません。ローカル ネットワーク上の ARP 要求に直接応答して、マシンの MAC アドレスをクライアントに提供します。

たとえば、次の構成では、MetalLB に 192.168.1.240 から 192.168.1.250 までの IP の制御を許可し、レイヤー 2 モードを構成します。

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.1.240-192.168.1.250

さらに、素晴らしいチュートリアルがあります中くらいminikube で最初から設定する方法を説明します。

MetalLB には、プロトコルと IP アドレスの範囲という 2 つの情報が含まれています。この構成では、MetalLB は、ノード IP に関する定義済み範囲である 192.168.99.95/105 からアドレスを配布するように指示されます。この場合、minikube の IP を取得するには、minikube ip コマンドを使用し、構成ファイルでそれに応じて範囲を設定します。

ここに画像の説明を入力してください ここに画像の説明を入力してください

関連情報