Kubernetes - 使用 Minikube 进入
Kubernetes - Ingress with Minikube
我正在通过玩 minikube 来学习 kubernetes。
这是我的 pod 部署文件,没问题。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 2
selector:
matchLabels:
component: web
template:
metadata:
labels:
component: web
spec:
containers:
- name: myapp
image: myid/myimage
我正在使用 NodePort 公开上述 pods。我可以在端口 30002 使用 minikube IP 访问。
apiVersion: v1
kind: Service
metadata:
name: my-ip-service
spec:
type: NodePort
externalIPs:
- 192.168.99.100
selector:
component: web
ports:
- port: 3000
nodePort: 30002
targetPort: 8080
现在我想使用 ingress 在端口 80 访问应用程序,它将请求转发到端口 3000 的 ip 服务。它不起作用
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: my-ip-service
servicePort: 3000
如果我尝试访问入口,地址为空。
NAME HOSTS ADDRESS PORTS AGE
test-ingress * 80 41m
如何在minikube中使用ingress?或者如何将 minikube ip 与入口服务绑定 - 这样应用程序就可以在不使用 nodeport
的情况下暴露在外面
您可以通过以下方式获取您的 minikube 节点的 IP 地址:
minikube ip
入口的 IP 地址不会填充到 minikube 中,因为 minikube 缺少负载平衡器。如果您想要 minikube 集群的负载均衡器,https://github.com/knative/serving/blob/master/docs/creating-a-kubernetes-cluster.md#loadbalancer-support-in-minikube 建议 运行 使用以下命令来修补您的集群:
sudo ip route add $(cat ~/.minikube/profiles/minikube/config.json | jq -r ".KubernetesConfig.ServiceCIDR") via $(minikube ip)
kubectl run minikube-lb-patch --replicas=1 --image=elsonrodriguez/minikube-lb-patch:0.1 --namespace=kube-system
我认为您缺少 minikube 本身的入口控制器资源。在 K8s 上创建入口控制器资源有很多可能的方法,但我认为对您来说,开始使用 minikube 的最佳方法是遵循 this 文档。
一旦开始工作,请不要忘记阅读有关 Ingress 的一般信息。
我正在通过玩 minikube 来学习 kubernetes。
这是我的 pod 部署文件,没问题。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 2
selector:
matchLabels:
component: web
template:
metadata:
labels:
component: web
spec:
containers:
- name: myapp
image: myid/myimage
我正在使用 NodePort 公开上述 pods。我可以在端口 30002 使用 minikube IP 访问。
apiVersion: v1
kind: Service
metadata:
name: my-ip-service
spec:
type: NodePort
externalIPs:
- 192.168.99.100
selector:
component: web
ports:
- port: 3000
nodePort: 30002
targetPort: 8080
现在我想使用 ingress 在端口 80 访问应用程序,它将请求转发到端口 3000 的 ip 服务。它不起作用
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: my-ip-service
servicePort: 3000
如果我尝试访问入口,地址为空。
NAME HOSTS ADDRESS PORTS AGE
test-ingress * 80 41m
如何在minikube中使用ingress?或者如何将 minikube ip 与入口服务绑定 - 这样应用程序就可以在不使用 nodeport
的情况下暴露在外面您可以通过以下方式获取您的 minikube 节点的 IP 地址:
minikube ip
入口的 IP 地址不会填充到 minikube 中,因为 minikube 缺少负载平衡器。如果您想要 minikube 集群的负载均衡器,https://github.com/knative/serving/blob/master/docs/creating-a-kubernetes-cluster.md#loadbalancer-support-in-minikube 建议 运行 使用以下命令来修补您的集群:
sudo ip route add $(cat ~/.minikube/profiles/minikube/config.json | jq -r ".KubernetesConfig.ServiceCIDR") via $(minikube ip)
kubectl run minikube-lb-patch --replicas=1 --image=elsonrodriguez/minikube-lb-patch:0.1 --namespace=kube-system
我认为您缺少 minikube 本身的入口控制器资源。在 K8s 上创建入口控制器资源有很多可能的方法,但我认为对您来说,开始使用 minikube 的最佳方法是遵循 this 文档。
一旦开始工作,请不要忘记阅读有关 Ingress 的一般信息。