こんにちは。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 コマンドを使用し、構成ファイルでそれに応じて範囲を設定します。