Привет, я установил и настроил Kubernates. Я пробовал использовать как minikube, так и kubeadm. Я установил: flannel, nginx-ingress-controller, metalLB, а затем настроил службу ngix-ingress-controller на loadBalancer.
Я всегда получаю ошибку 502 bad gateway при попытке открыть простое приложение WordPress (используя clusterIp или даже nodePort)
ОС: 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 остается бездействующим до тех пор, пока не будет настроен. Это достигается путем создания и развертывания configmap в том же пространстве имен (metallb-system), что и развертывание.
Есть примерКонфигурация уровня 2.
Режим уровня 2 является самым простым в настройке: во многих случаях вам не нужна какая-либо специфическая для протокола конфигурация, только IP-адреса.
Режим уровня 2 не требует привязки IP-адресов к сетевым интерфейсам ваших рабочих узлов. Он работает, отвечая на запросы ARP в вашей локальной сети напрямую, чтобы предоставить MAC-адрес машины клиентам.
Например, следующая конфигурация дает MetalLB контроль над IP-адресами от 192.168.1.240 до 192.168.1.250 и настраивает режим уровня 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-адресов. В этой конфигурации MetalLB предписано выдавать адреса из 192.168.99.95/105, это наш предопределенный диапазон относительно IP-адреса узла. В нашем случае для получения IP нашего minikube мы используем команду minikube ip и устанавливаем соответствующий диапазон в файле конфигурации.