nginx-ingress提供外部访问容器服务的入口,用起来和nginx类似
查看当前是否存在ingress
# 1. 查看是否有Ingress Controller Pod
kubectl get pods -A | grep ingress
# 2. 查看已定义的IngressClass
kubectl get ingressclass
# 3. 查看集群默认IngressClass(标注为true)
kubectl get ingressclass -o jsonpath='{.items[?(@.metadata.annotations.ingressclass.kubernetes.io/is-default-class=="true")].metadata.name}'
安装nginx-ingress
# 安装官方Nginx Ingress Controller
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
# 验证Pod运行
kubectl get pods -n ingress-nginx
# 查看Service(单节点通常为NodePort)
kubectl get svc -n ingress-nginx
在物理机的nginx修改配置指向nginx-ingress
#我这个占用的31661对应80端口
❯ kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.102.243.179 <pending> 80:31661/TCP,443:30732/TCP 25m
ingress-nginx-controller-admission ClusterIP 10.96.38.70 <none> 443/TCP 25m
#在nginx-ingress上添加配置
server {
listen 80;
server_name *.cyan.com;
location / {
proxy_pass http://10.0.0.2:31661; # 👈 改成你自己的 NodePort
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600;
}
}