您的当前位置:首页ingress-nginx部署

ingress-nginx部署

2024-12-12 来源:哗拓教育

ingress介绍

在kubernetes中,POD,SVC的IP地址只能集群内部使用,集群外部是无法访问的。
为了能让外部的应用访问进来,kubernetes提供了如下几种方案:

  • NodePort
  • LoadBalancer
  • Ingress

ingress工作原理

  • 本质:7层http/https代理
  • ingress controller通过和kubernetes apiserver交互,动态的获取集群中的ingress规则
  • 解析ingress规则,生成proxy服务的配置,比如nginx配置
  • 再写到ingress proxy的pod中,如果pod运行的是nginx服务,就生成nginx配置,并放到/etc/nginx/nginx.conf中
  • 然后reload服务

ingress解决那些问题?

  • 通过yaml配置动态配置ingress服务
  • 减少不必要的端口暴露
  • 卸载https,让集群内部用http

ingress当前的实现方式

图片.png

部署Ingress-nginx

部署文件介绍,准备

deploy的yaml

图片.png

configmap.yaml 存储配置信息,key/value值
namespace.yaml 建命名空间
mandatory.yaml 包含部署deploy相关所有资源(configmap.yaml,namespace.yaml,rbac.yaml,with-rbac.yaml)
rbac.yaml rbac授权配置,创建Ingress需要使用的ServiceAccount,ClusterRole,Role,RoleBinding,ClusterRoleBinding
with-rbac.yaml 能使用rbac授权的deploy配置,用于构建ingress-controller

service的yaml

自建集群用:


图片.png

公有云上用:


图片.png

亚马孙云上用:


图片.png

国外源改为国内源

修改mandatory.yaml或者with-rbac.yaml里面的image地址,避免原地址镜像拉取超时

镜像国外源地址 版本号 镜像国内源地址
quay.io/kubernetes-ingress-controller/nginx-ingress-controller 0.30.0

部署

自建集群部署

wget 
sed -i  mandatory.yaml
kubectl apply -f mandatory.yaml
kubectl apply -f 

验证

查看deploy

[root@nw61 nginx-ingress]# kubectl -n ingress-nginx get pods
NAME                                        READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-55c9df84c6-8x4kk   1/1     Running   0          18h

查看pod详情
kubectl -n ingress-nginx describe pod nginx-ingress-controller-55c9df84c6-8x4kk
查看svc

[root@nw61 nginx-ingress]# kubectl -n ingress-nginx get svc
NAME            TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   NodePort   10.107.133.174   <none>        80:30708/TCP,443:31055/TCP   18h

访问测试

[root@nw61 nginx-ingress]# curl http://10.107.133.174/
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.17.8</center>
</body>
</html>
[root@nw61 nginx-ingress]# ping 10.107.133.174
PING 10.107.133.174 (10.107.133.174) 56(84) bytes of data.
64 bytes from 10.107.133.174: icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from 10.107.133.174: icmp_seq=2 ttl=64 time=0.044 ms
显示全文