tuq*_*tuq 12 docker kubernetes windows-subsystem-for-linux wsl-2
目前,我正在使用 Docker 桌面与WSL2集成。我发现Docker Desktop自动为我创建了一个集群。这意味着我不必安装和使用Minikube或Kind来创建集群。问题是,如果我使用 Docker 桌面的“内置”集群,我如何启用Ingress Controller?我尝试创建一个Ingress来检查这是否有效,但正如我的猜测,它没有用。
我创建的 YAML 文件如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
spec:
minReadySeconds: 30
selector:
matchLabels:
app: webapp
replicas: 1
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: nodejs-helloworld:v1
---
apiVersion: v1
kind: Service
metadata:
name: webapp-service
spec:
selector:
app: webapp
ports:
- name: http
port: 3000
nodePort: 30090 # only for NotPort > 30,000
type: NodePort #ClusterIP inside cluster
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: webapp-ingress
spec:
defaultBackend:
service:
name: webapp-service
port:
number: 3000
rules:
- host: ingress.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: webapp-service
port:
number: 3000
Run Code Online (Sandbox Code Playgroud)
我试图访问ingress.local/但它没有成功。(我在主机文件中添加了 ingress.local 以指向 127.0.0.1。并且webapp在kubernetes.docker.internal:30090 上运行良好)
你能帮我知道根本原因吗?谢谢你。
tuq*_*tuq 12
最后我找到了修复的方法。我必须通过命令部署 ingress Nginx:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/cloud/deploy.yaml
Run Code Online (Sandbox Code Playgroud)
(按照https://kubernetes.github.io/ingress-nginx/deploy/#docker-for-mac 上的说明进行操作。它适用于 Windows 的 Docker)
现在我可以成功访问http://ingress.local 了。
Mal*_*ata 10
Windows 版 Docker Desktop 的最新版本已经添加了一个主机文件条目: 127.0.0.1 kubernetes.docker.internal
.
kubernetes.docker.internal
如果您想指向 ,则必须在 Ingress 定义中使用URL 作为主机名127.0.0.1
。这应该位于kubernetes.github.io/ingress-nginx/deploy页面的文档中,但那里没有适用于 Windows 的 Docker Desktop 部分。您的文件应如下所示:
apiVersion: v1
kind: Service
metadata:
name: webapp-service
spec:
type: NodePort
selector:
app: webapp
ports:
- name: http
protocol: TCP
port: 3000
nodePort: 30090
Run Code Online (Sandbox Code Playgroud)
您的 Ingress 文件应如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: webapp-ingress
spec:
rules:
- host: kubernetes.docker.internal
http:
paths:
- path: /
backend:
serviceName: webapp-service
servicePort: http
Run Code Online (Sandbox Code Playgroud)
然后您就可以使用连接到应用程序http://kubernetes.docker.internal/
。
您可以在此处查看示例:wsl2-docker-for-desktop。
你必须在你的集群上安装一个 ingress-nginx 控制器,这样你的节点就会有一个开放的端口 80/443。
使用helm
(v3 - 请参阅文档):
helm install --namespace kube-system nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx
Run Code Online (Sandbox Code Playgroud)
使用kubectl
(见文档):
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.43.0/deploy/static/provider/cloud/deploy.yaml
Run Code Online (Sandbox Code Playgroud)
然后手动将您的入口主机名添加到/etc/hosts
:
127.0.0.1 ingress.local
127.0.0.1 my.other.service.local
# ...
Run Code Online (Sandbox Code Playgroud)
然后,如果您在http://ingress.local上提出请求:
归档时间: |
|
查看次数: |
9239 次 |
最近记录: |