В установках из чистого металла невозможно использовать Ingress
по умолчанию, вам необходимо использовать MetalLB.
В Nginx документах показано, как настроить MetalLB , чтобы разрешить вашему голому металлическому кластеру использовать службы LoadBalancer.
MetalLB предоставляет реализацию балансировщика сетевой нагрузки для кластеров Kubernetes, которые не работают на поддерживаемом облачном провайдере, эффективно позволяя использовать сервисы LoadBalancer в любом кластере.
По сути, установка проста:
kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.3/manifests/metallb.yaml
А затем создайте ConfigMap для настройки: - Отредактируйте диапазон IP-адресов в соответствии с вашей сетью
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 <= EDIT IP RANGE
Проверьте установку, набрав kubectl get pods -n metallb-system
, это ожидаемый результат:
$ kubectl get pods -n metallb-system
NAME READY STATUS RESTARTS AGE
controller-65895b47d4-6wzfr 1/1 Running 0 9d
speaker-v52xj 1/1 Running 0 9d
После MetalLB и сконфигурированный может установить Nginx Входные данные после nginx документов :
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/mandatory.yaml
А затем:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/baremetal/service-nodeport.yaml
Если вы предпочитаете, вы можете использовать Шлем :
helm install my-nginx stable/nginx-ingress
Если т В кластере kubernetes включен RBA C, затем выполните:
helm install my-nginx stable/nginx-ingress --set rbac.create=true
Если вы используете Helm 2 , то укажите имя выпуска с помощью --name
flag
helm install stable/nginx-ingress --name my-nginx
или
helm install stable/nginx-ingress --name my-nginx --set rbac.create=true
Определить установленную версию:
POD_NAME=$(kubectl get pods -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}')
kubectl exec -it $POD_NAME -- /nginx-ingress-controller --version
Ссылки:
https://kubernetes.github.io/ingress-nginx/deploy/
https://metallb.universe.tf/