kubernetes - Minikube 入口没有响应
问题描述
我无法使用 minikube 在我的本地计算机上运行 Minikube Nginx Ingress。它只是超时。我遵循了本教程和本教程。
Minikube 版本:
v1.8.1 (commit cbda04cf6bbe65e987ae52bb393c10099ab62014)
集群信息:
// Client Version:
{
Major: "1",
Minor: "17",
GitVersion: "v1.17.1",
GitCommit: "d224476cd0730baca2b6e357d144171ed74192d6",
GitTreeState: "clean",
BuildDate: "2020-01-14T21:04:32Z",
GoVersion: "go1.13.5",
Compiler: "gc",
Platform: "windows/amd64"
}
// Server Version: version.Info
{
Major: "1",
Minor: "17",
GitVersion: "v1.17.3",
GitCommit: "06ad960bfd03b39c8310aaf92d1e7c12ce618213",
GitTreeState: "clean",
BuildDate: "2020-02-11T18:07:13Z",
GoVersion: "go1.13.6",
Compiler: "gc",
Platform: "linux/amd64"
}
我的本地环境一定有问题,但我不知道如何调试它。到目前为止,这是我当前环境的样子:
apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes-first
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
name: http
selector:
app: hello-kubernetes-first
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-kubernetes-first
spec:
replicas: 3
selector:
matchLabels:
app: hello-kubernetes-first
template:
metadata:
labels:
app: hello-kubernetes-first
spec:
containers:
- name: hello-kubernetes
image: paulbouwer/hello-kubernetes:1.5
ports:
- containerPort: 8080
env:
- name: MESSAGE
value: Hello from the first deployment!
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-kubernetes-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: hw1.com
http:
paths:
- backend:
serviceName: hello-kubernetes-first
servicePort: 80
系统吊舱
~\Desktop\kubernetes> kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE
coredns-6955765f44-8zxgw 1/1 Running 6 12d
coredns-6955765f44-jr9xq 1/1 Running 7 12d
etcd-m01 1/1 Running 1 3h48m
kube-apiserver-m01 1/1 Running 1 3h48m
kube-controller-manager-m01 1/1 Running 597 12d
kube-proxy-mnhcl 1/1 Running 7 12d
kube-scheduler-m01 1/1 Running 596 12d
nginx-ingress-controller-6fc5bcc8c9-z7m2b 1/1 Running 6 27h
storage-provisioner 1/1 Running 11 12d
C:\Windows\System32\drivers\etc\hosts
172.17.186.182 hw1.com
minikube IP
~\Desktop\kubernetes> minikube IP
172.17.186.182
解决方案
您ClusterIP
在服务定义中使用,从输出的外观来看,您正在 Windows 上运行 minikube。
从您的 Windows CMD 您将无法访问,ClusterIP
因为它在 VM(虚拟机)中运行。您可以通过运行来确认这一点:
minikube ssh
然后在虚拟机中:
curl 172.17.186.182
您可以尝试NodePort
在 VM 上使用 a 公开您的服务。这将是您的 VM 外部可用的端口,但它不会是 80,因为 Kubernetes 分配30000-32767
. 如果您愿意,可以使用该选项在kube-apiserver中手动更改它。--service-node-port-range portRange
apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes-first
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
name: http
selector:
app: hello-kubernetes-first
NodePort
从您的 Windows CMD获取(示例):
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-kubernetes-first NodePort 10.102.234.222 <none> 80:31181/TCP 3m51s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 138d
上面的 NodePort 是31181
接下来,您必须在 VM 中使用 eth0 的 IP:
minikube ssh
$ ifconfig eth0
然后回到你的 Windows CMD:
curl <ip-from-eth0-above>:31181
推荐阅读
- ios - Continuous Sine Wave From AKMIDISampler when AKMicrophone is Present
- java - Recycling methods that need certain objects in Java
- java - Finding a list of related objects by ID
- javascript - Javascript - 并行调用两个异步函数并将两个结果传递给第三个
- vue.js - Vuex - 如何跨不同选项卡持久存储更新?
- powershell - 从 .net 核心配置 powershell 核心以配置一个驱动器
- javascript - 使用 $.get() javascript 将值传递给我的控制器到我的控制器方法
- c# - 使用可观察流上的开关时正确订阅当前可观察
- c# - c#如何在System.Graphics中使用winforms全屏?
- maven - 使用 swagger-maven 插件在 Swagger.yaml 中附加自定义标签