我是第一次接触这种集装箱化的东西。我在Ubuntu18.04上运行minikube,我的安装地址是:https://kubernetes.github.io/ingress-nginx/deploy/,所以当我执行kubectl get services -n ingress-nginx时,只需执行minikube addons enable ingress
it shows
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.100.216.141 <none> 80:32205/TCP,443:31915/TCP 5d2h
ingress-nginx-controller-admission ClusterIP 10.106.58.189 <none> 443/TCP 5d2h然而,根据我遵循的课程,ingress nginx-controller类型应该是负载均衡器。
我的入口配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
rules:
- host: we-creators.dev
http:
paths:
- path: /api/users/?(.*)
backend:
serviceName: auth-srv
servicePort: 3000
- path: /?(.*)
backend:
serviceName: client-srv
servicePort: 3000发布于 2020-08-06 18:02:01
我已经用2个最新的版本测试了这一点,目前我看到的是没有与ingress nginx控制器相关的服务(部署为minikube插件)。
请看一下ingress nginx部署中的端口。
使用此规范在kube-system命名空间中启用入口外接程序创建的部署:
...
spec:
containers:
- args:
- --report-node-internal-ip-address
...
ports:
- cotainerPort: 80
hostPort:80
name: http
protocol: TCP
- cotainerPort: 443
hostPort: 443
name: https
protocol: TCP
...看起来在当前的minikube版本中,ingress nginx正在使用--hostPorts而不是nginx的ingress nodeport服务。最重要的信息是您当前的cni网络插件是否支持Port-mapping
来自CNI networking plugin supports hostPort的官方文档
CNI网络插件支持hostPort。
您可以在minikube节点中检查此设置:
minikube -p your_name ssh
cat /etc/cni/net.d/your_config
"type": "portmap",
"capabilities": {"portMappings": true},限制与hostNetwork: true配置相同:
此部署方法的一个主要限制是在每个群集节点上只能调度一个NGINX Ingress控制器Pod,因为在同一网络接口上多次绑定同一端口在技术上是不可能的
-- report-node-internal-ip-address
因为裸机节点通常没有ExternalIP,所以必须启用--report-node- internal - IP -address标志,该标志将所有入口对象的状态设置为运行NGINX入口控制器的所有节点的内部IP地址。
Kubernetes ServiceTypes允许您指定所需的服务类型。的默认值是ClusterIP。
类型值及其行为如下:
服务类型Loadbalancer的特别说明
当服务类型为设置为LoadBalancer时,Kubernetes向集群内的pod提供等同于type equals ClusterIP的功能,并通过使用Kubernetes pod的条目对(Kubernetes外部)负载均衡器进行编程来扩展该功能。Kubernetes服务控制器自动创建外部负载均衡器、运行状况检查(如果需要)、防火墙规则(如果需要),并检索云提供商分配的外部IP并将其填充到服务对象中
作为裸机环境中的解决方法,您可以使用
MetalLB为不在受支持的云提供商上运行的Kubernetes集群提供网络负载均衡器实现,从而有效地允许在任何集群中使用LoadBalancer服务。
https://stackoverflow.com/questions/63209635
复制相似问题