我无法使用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
系统吊舱
~Desktopkubernetes> 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
~Desktopkubernetes> minikube IP
172.17.186.182
您在服务定义中使用ClusterIP
,从输出的外观来看,您正在Windows上运行minikube。
从您的Windows CMD,您将无法访问ClusterIP
,因为它在VM(虚拟机(中运行。您可以通过运行来确认这一点
minikube ssh
然后在VM中:
curl 172.17.186.182
您可以尝试在虚拟机上使用NodePort
公开您的服务。这将是一个从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
从Windows CMD获取NodePort
(示例(:
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
检查入口插件是否已启用:
minikube addons list
如果没有,启用它:
minikube addons enable ingress