如何解决Kubernetes - docker 驱动程序的入口 - minikube 1.16
我正在尝试在 Windows 10 家庭版(版本 19042)上为 minikube 1.16 的 docker 驱动程序设置入口。 之前不支持 docker 驱动程序的 Ingress,但现在在 minikube 1.16 上: https://github.com/kubernetes/minikube/pull/9761
我自己一直在尝试一些东西,但是在连接到 ERR_CONNECTION_REFUSED
或 127.0.0.1
的入口时我得到了 kubernetes.docker.internal
步骤:
- minikube 启动
- minikube 插件启用入口
- 创建部署
- 创建集群IP
- 入口配置
这是我的配置:
#cluster ip service
apiVersion: v1
kind: Service
metadata:
name: client-cluster-ip-service
spec:
type: ClusterIP
selector:
component: web
ports:
- port: 3000
targetPort: 3000
# not posting deployment code because it's not relevant,but there is a deployment with selector 'component:web' and it's exposing port 3000.
#ingress service
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: 'true'
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: kubernetes.docker.internal
http:
paths:
- path: /?(.*)
pathType: Prefix
backend:
service:
name: client-cluster-ip-service
port:
number: 3000
我在主机文件中有 dns 重定向。
我也在另一个终端上尝试过“minikube tunnel”,但也没有成功。
谢谢!
解决方法
rules
字段下的入口对象定义有误:
rules:
- host: kubernetes.docker.internal
- http:
paths:
确切的问题是 -
位于 http
前面,它使 host
和 http
分开数组。
看看你的转换器 yaml 在 json 中的样子:
{
"spec": {
"rules": [
{
"host": "kubernetes.docker.internal"
},{
"http": {
"paths": [
{
"path": "/?(.*)","pathType": "Prefix","backend": {
---
这是带有入口定义的注释的样子。
spec:
rules:
- host: kubernetes.docker.internal
http:
paths:
- path: /?(.*)
pathType: Prefix
现在注意这个 yaml 转换为 json 的样子:
{
"spec": {
"rules": [
{
"host": "kubernetes.docker.internal","http": {
"paths": [
{
"path": "/?(.*)","backend": {
---
您可以使用 yaml-viewer
轻松地更好地形象化版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。