Ingress не работает
Я пытался смывать образец. https://github.com/kubernetes/ingress-nginx/tree/d27829ce7ebc5f202816c52f69985bc102db9a63/docs/examples/static-ip
Итак, я пишу здесь файл настроек.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-nginx
spec:
tls:
# This assumes tls-secret exists.
- secretName: tls-secret
rules:
- http:
paths:
- backend:
# This assumes http-svc exists and routes to healthy endpoints.
serviceName: http-svc
servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: http-svc
spec:
replicas: 1
template:
metadata:
labels:
app: http-svc
spec:
containers:
- name: http-svc
image: gcr.io/google_containers/echoserver:1.8
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: http-svc
labels:
app: http-svc
spec:
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app: http-svc
И выполните следующую команду.
kubectl create -f http-svc.yaml
Но я получил следующую ошибку.
$ kubectl describe ingress
Name: ingress-nginx
Namespace: default
Address:
Default backend: default-http-backend:80 (10.56.2.5:8080)
TLS:
tls-secret terminates
Rules:
Host Path Backends
---- ---- --------
*
http-svc:80 (<none>)
Annotations:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ADD 8m loadbalancer-controller default/ingress-nginx
Warning GCE 2m (x17 over 7m) loadbalancer-controller googleapi: Error 400: Invalid value for field 'namedPorts[1].port': '0'. Must be greater than or equal to 1, invalid
Если такая ошибка возникает, в чем причина? kubectl версия = v1.8.1
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.1", GitCommit:"f38e43b221d08850172a9a4ea785a86a3ffa3b3a", GitTreeState:"clean", BuildDate:"2017-10-12T00:45:05Z", GoVersion:"go1.9.1", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"7+", GitVersion:"v1.7.6-gke.1", GitCommit:"407dbfe965f3de06b332cc22d2eb1ca07fb4d3fb", GitTreeState:"clean", BuildDate:"2017-09-27T21:21:34Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
1 ответ
Балансировщики нагрузки GCE не работают со службами типа ClusterIP:
nodeport является требованием контроллера GCE Ingress (и облачных контроллеров в целом). Контроллеры On-Prem, такие как входные контроллеры nginx, работают с clusterip.
Ваш сервис не имеет определенного типа, поэтому он имеет тип ClusterIP
по умолчанию. Это изменение должно сделать свое дело:
---
apiVersion: v1
kind: Service
metadata:
name: http-svc
labels:
app: http-svc
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app: http-svc