k8s安装ingress-nginx
⚠️ 域名配置:ingress-nginx公网配置域名不是必须的,在没有域名在内网配置时可以舍弃host属性,所有地址都可以访问。
⚠️ 在主节点上执行,主节点上无法访问ingress暴漏出的服务。
⚠️ 版本选择:docker-20.10.16、k8s-v1.22.17、ingress-nginx-1.3.1,根据k8s的版本进行的选择。
# 下载ingress-nginx的yaml
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.3.1/deploy/static/provider/cloud/deploy.yaml
⚠️ 注意:需要将"deploy.yaml"源文件中的文件更改为国内的地址,因为registry.k8s.io是kubernetes的镜像源国内无法访问。
-
将“registry.k8s.io/ingress-nginx/controller:v1.3.1@sha256:54f7fe2c6c5a9db9a0ebf1131797109bb7a4d91f56b9b362bde2abd237dd1974”
更改为“registry.aliyuncs.com/google_containers/nginx-ingress-controller:v1.3.1”。 -
将"registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.3.0@sha256:549e71a6ca248c5abd51cdb73dbc3083df62cf92ed5e6147c780e30f7e007a47
"更换为“registry.aliyuncs.com/google_containers/kube-webhook-certgen:v1.3.0”。
-
设置pod的控制器,将“deploy.yaml”中的391行“kind: Deployment”改为“kind: DaemonSet”。
-
暴漏ingress的80端口,在“deploy.yaml”中的415行下添加“hostNetwork: true”。
# 查看pod
kubectl get pod -A
# 返回值
ingress-nginx ingress-nginx-admission-create-nvlwg 0/1 Completed 0 9m43s
ingress-nginx ingress-nginx-admission-patch-jd9g2 0/1 Completed 2 9m43s
ingress-nginx ingress-nginx-controller-lgf8k 1/1 Running 0 9m43s
ingress-nginx ingress-nginx-controller-qp2mh 1/1 Running 0 9m43s
ingress-nginx ingress-nginx-controller-rzsjl 1/1 Running 0 9m43s
# 查看服务
kubectl get svc -A
# 返回值
ingress-nginx ingress-nginx-controller LoadBalancer 10.96.128.42 <pending> 80:32650/TCP,443:31400/TCP 14m
ingress-nginx ingress-nginx-controller-admission ClusterIP 10.97.61.37 <none> 443/TCP 14m
# 测试是否成功
curl http://10.96.128.42
# 返回值
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>