Kubernetes - Ingress on docker driver语言 - minikube 1.16



我正在尝试在windows 10 home (build 19042)上安装minikube 1.16的docker驱动程序。以前不支持docker驱动上的入口,但现在minikube 1.16支持:https://github.com/kubernetes/minikube/pull/9761

我一直在尝试自己的东西,但我在连接到127.0.0.1kubernetes.docker.internal的入口时得到了ERR_CONNECTION_REFUSED

步骤:

  1. minikube开始
  2. minikube插件启用入口
  3. 创建部署
  4. 创建ClusterIP
  5. 入口配置

下面是我的配置:

#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

我在hosts文件中有dns重定向。

我也试过"minikube隧道";在另一个终端,但也没有运气。

谢谢!

rules字段下的入口对象定义错误:

rules:
- host: kubernetes.docker.internal
- http:
paths:

确切的问题是-http前面,这使得hosthttp单独的数组。

看看你的转换器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": "/?(.*)",
"pathType": "Prefix",
"backend": {
---

使用yaml-viewer

可以更容易地看到这一点

最新更新