在 Minikube 中部署 Ingress
在 Minikube 中部署 Ingress 控制器需要以下步骤,我将为您提供完整指南:
1. 启动 Minikube 并启用 Ingress 插件
minikube start --driver=docker --cpus=2 --memory=4g # 推荐至少2核4G内存
minikube addons enable ingress
2. 验证 Ingress 控制器是否运行
kubectl get pods -n ingress-nginx
正常应该看到3个Pod,类似:
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create--1-x2n5g 0/1 Completed 0 1m
ingress-nginx-admission-patch--1-x8p7k 0/1 Completed 0 1m
ingress-nginx-controller-5d88495688-d7v6r 1/1 Running 0 1m
3. 部署测试应用
# 创建部署
kubectl create deployment web --image=nginx
# 暴露服务
kubectl expose deployment web --port=80
4. 创建 Ingress 资源
创建 ingress.yaml
文件:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: web.minikube.test
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80
应用配置:
kubectl apply -f ingress.yaml
5. 访问应用
方法1:修改本地hosts文件
echo "$(minikube ip) web.minikube.test" | sudo tee -a /etc/hosts
然后在浏览器访问:http://web.minikube.test
方法2:使用curl测试
curl -H "Host: web.minikube.test" $(minikube ip)
常见问题解决
-
Ingress 插件无法启用
minikube delete minikube start --driver=docker --cpus=2 --memory=4g minikube addons enable ingress
-
Pod 卡在 ContainerCreating
minikube ssh -- docker pull registry.k8s.io/ingress-nginx/controller:v1.8.1 minikube ssh -- docker pull registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407
-
查看详细日志
kubectl describe ingress example-ingress kubectl logs -n ingress-nginx ingress-nginx-controller-xxxx
-
其他部署失败
# 下载安装yaml文件到服务器 wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.2/deploy/static/provider/cloud/deploy.yaml # 调整"deploy.yaml"源文件 sed -i 's#registry.k8s.io/ingress-nginx/controller:v1.11.2@sha256:d5f8217feeac4887cb1ed21f27c2674e58be06bd8f5184cacea2a69abaf78dce#registry.aliyuncs.com/google_containers/nginx-ingress-controller:v1.11.2#g' deploy.yaml sed -i 's#registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.3@sha256:a320a50cc91bd15fd2d6fa6de58bd98c1bd64b9a6f926ce23a600d87043455a3#registry.aliyuncs.com/google_containers/kube-webhook-certgen:v1.4.3#g' deploy.yaml # 执行安装命令 kubectl apply -f deploy.yaml # 删除安装 kubectl delete -f deploy.yaml [参考文档](https://blog.csdn.net/z1299236067/article/details/142502502)
高级配置
-
启用HTTPS
# 生成自签名证书 openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout tls.key -out tls.crt -subj "/CN=web.minikube.test" # 创建TLS secret kubectl create secret tls web-tls --cert=tls.crt --key=tls.key # 更新ingress.yaml添加tls配置 spec: tls: - hosts: - web.minikube.test secretName: web-tls
-
查看Ingress控制器日志
kubectl logs -n ingress-nginx deployment/ingress-nginx-controller -f
清理资源
kubectl delete ingress example-ingress
kubectl delete service web
kubectl delete deployment web
minikube addons disable ingress
通过以上步骤,您可以在Minikube中完整部署和使用Ingress功能。如果遇到问题,建议检查Pod日志和Ingress控制器的状态。
No Comments