空地址Kubernetes入口 [英] Empty ADDRESS kubernetes ingress
本文介绍了空地址Kubernetes入口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试在Kubernetes集群上配置入口。我按照documentation安装入口控制器,并运行以下命令
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml
之后,默认的-http-Backend和nginx-inress-control开始运行:
ingress-nginx default-http-backend-846b65fb5f-6kwvp 1/1 Running 0 23h 192.168.2.28 node1
ingress-nginx nginx-ingress-controller-d658896cd-6m76j 1/1 Running 0 6m 192.168.2.31 node1
我尝试测试入口并部署了以下服务:
apiVersion: apps/v1
kind: Deployment
metadata:
name: echoserver-deploy
spec:
replicas: 2
selector:
matchLabels:
app: echo
template:
metadata:
labels:
app: echo
spec:
containers:
- name: my-echo
image: gcr.io/google_containers/echoserver:1.8
---
apiVersion: v1
kind: Service
metadata:
name: echoserver-svc
spec:
selector:
app: echo
ports:
- protocol: TCP
port: 8080
targetPort: 8080
和以下入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: happy-ingress
annotations:
INGRESS.kubernetes.io/rewrite-target: /
spec:
rules:
- host: happy.k8s.io
http:
paths:
- path: /echoserver
backend:
serviceName: echoserver-svc
servicePort: 8080
当我运行命令‘kubectl get ing’时收到:
NAME HOSTS ADDRESS PORTS AGE
happy-ingress happy.k8s.io 80 14m
我没有解析地址,我不知道问题出在哪里,因为所有的Pod都在运行。您能给我一个提示,说明问题可能是什么吗?
谢谢
推荐答案
在创建入口规则之前,您必须按照命令启用ingress addons
。您也可以在执行任何其他命令之前启用它
$ minikube addons enable ingress
ingress was successfully enabled
等待Pod启动并运行。您可以执行以下命令进行检查,并等待类似的输出
kubectl get pods -n kube-system | grep nginx-ingress-controller
nginx-ingress-controller-5984b97644-jjng2 1/1 Running 2 1h
对于Deployment
,您必须指定containerPort
,对于Service
,您必须指定http
协议。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: echoserver-deploy
spec:
replicas: 2
selector:
matchLabels:
app: my-echo
template:
metadata:
labels:
app: my-echo
spec:
containers:
- name: my-echo
image: gcr.io/kubernetes-e2e-test-images/echoserver:2.1
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: echoserver-svc
spec:
selector:
app: my-echo
ports:
- protocol: TCP
port: 80
targetPort: 8080
name: http
对于入口规则,将端口servicePort
从8080更改为默认http端口80。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: happy-ingress
annotations:
INGRESS.kubernetes.io/rewrite-target: /
spec:
rules:
- host: happy.k8s.io
http:
paths:
- path: /echoserver
backend:
serviceName: echoserver-svc
servicePort: 80
现在应用这些文件并创建您的Pod、服务和入口规则。请稍等片刻,获取您的入口规则的地址将花费一些时间。
现在您可以使用minikube ip
地址访问您的服务,但还不能使用主机名。为此,您必须在/etc/hosts
文件中添加主机和各自的IP地址。因此,在您喜欢的编辑器中打开/etc/hosts
文件并在下面添加行,其中是您的mini kube的实际IP
<minikube_ip> happy.k8s.io
现在,您可以使用主机名访问您的服务。验证是否遵循命令
curl http://happy.k8s.io/echoserver
这篇关于空地址Kubernetes入口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文