【发布时间】:2019-05-30 10:45:19
【问题描述】:
我是 Kubernetes 新手,正在尝试让 Ingress-Nginx 在我的本地 k8s 集群上工作。
我已经安装并运行了:
$ kubectl get pods --namespace=ingress-nginx
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-76f97b74b-bbb6h 1/1 Running 0 13h
然后我创建了两个nginx服务(想测试基于名称的路由):
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 20h
nginx NodePort 10.102.188.253 <none> 80:32025/TCP 36m
nginx2 NodePort 10.109.43.89 <none> 80:32458/TCP 35m
我创建了我的入口:
$ kubectl get ingress -o yaml
apiVersion: v1
items:
- apiVersion: extensions/v1beta1
kind: Ingress
metadata:
creationTimestamp: 2018-10-25T12:27:44Z
generation: 1
name: test
namespace: default
resourceVersion: "98114"
selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/test
uid: 5fbc2e9e-d851-11e8-995f-2ae1e5e17bac
spec:
rules:
- host: test-ingress.chbresser.com
http:
paths:
- backend:
serviceName: nginx
servicePort: 80
- host: test-ingress2.chbresser.com
http:
paths:
- backend:
serviceName: nginx2
servicePort: 80
status:
loadBalancer: {}
kind: List
metadata:
resourceVersion: ""
selfLink: ""
据我了解,这就是我应该做的所有事情,但它没有获得 IP 地址:
$ kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
test test-ingress.chbresser.com,test-ingress2.chbresser.com 80 33m
我错过了哪一步?为什么我没有获得 IP?
编辑:
kubectl logs nginx-ingress-controller-76f97b74b-bbb6h --namespace=ingress-nginx:
W1025 05:44:10.003587 9 queue.go:130] requeuing &ObjectMeta{Name:sync status,GenerateName:,Namespace:,SelfLink:,UID:,ResourceVersion:,Generation:0,CreationTimestamp:0001-01-01 00:00:00 +0000 UTC,DeletionTimestamp:<nil>,DeletionGracePeriodSeconds:nil,Labels:map[string]string{},Annotations:map[string]string{},OwnerReferences:[],Finalizers:[],ClusterName:,Initializers:nil,}, err services "ingress-nginx" not found
【问题讨论】:
-
在创建入口定义时您是否尝试过
kubectl logs nginx-ingress-controller-76f97b74b-bbb6h --watch。您应该会看到入口控制器在执行此操作时在日志中记录了更新消息。如果没有更新,可能发现不起作用。 -
查看我的编辑。看起来它正在寻找一个名为 ingress-nginx 的服务,但文档只让您使用:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml部署它,它根本没有提到服务。 -
您是否尝试使用命令
kubectl get svc --namespace=ingress-nginx来查看您的入口控制器的服务? -
是的,它就在那里。
标签: nginx kubernetes