Kubernetes之Ingress-nginx部署使用

一、Ingress简介

在Kubernetes中,服务和Pod的IP地址仅在集群内部网络内部使用,对于集群的应用是不可见的。

为了使外部的应用能够访问集群内的服务,在Kubernetes目前提供了以下几种方案:
1)NodePort
2)LoadBalancer
3)Ingress

1)Ingress组成
Ingress 是反向代理规则,用来规定 HTTP/S 请求应该被转发到哪个 Service 上,比如根据请求中不同的 Host 和 url 路径让请求落到不同的 Service 上;
Ingress Controller 就是一个反向代理程序,它负责解析 Ingress 的反向代理规则,如果 Ingress 有增删改的变动,所有的 Ingress Controller 都会及时更新自己相应的转发规则,当 Ingress Controller 收到请求后就会根据这些规则将请求转发到对应的 Service;

2)Ingress工作原理
1)Ingress controller通过与Kubernetes api进行交互,动态的感知集群中Ingress规则的变化;
2)然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置;
3)再写到nginx-ingress-controller的pod里,这个Ingress controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中;
4)然后reload一下使配置生效。以此达到域名分别配置和动态更新的问题;

3) Ingress可以解决什么问题?
1)动态配置服务
如果是按照传统方式,当新增加一个服务时,我们可能需要在流量入口部署一台反向代理服务器指向我们新的K8s服务,而如果使用了Ingress,则只需配置好这个服务,当服务启动时,便会自动注册到Ingress中,不需要额外的操作;
2)减少不必要的端口映射
配置过k8s的都清楚, 第一步是要关闭防火墙的, 主要原因是k8s的很多服务会以NodePort方式映射出去, 这样就相当于给宿主机打了很多孔, 既不安全也不优雅. 而Ingress可以避免这个问题, 除了Ingress自身服务可能需要映射出去, 其他服务都不用NodePort方式;

二、配置Ingress-nginx

1)搭建registry私有仓库
搭建私有仓库的目的,仅仅是为了更快的获取镜像,如果网络稳定,也可跳过此步骤!

[root@master ~]# docker run -itd --name registry --restart=always  -p 5000:5000 -v /registry:/var/lib/registry registry:2
#搭建registry私有仓库
[root@master ~]#  vim /usr/lib/systemd/system/docker.service 
#修改docker的配置文件,指向私有仓库
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.10.52:5000
[root@master ~]# scp /usr/lib/systemd/system/docker.service root@node01:/usr/lib/systemd/system/
[root@master ~]# scp /usr/lib/systemd/system/docker.service root@node02:/usr/lib/systemd/system/
#将修改好的配置文件发送到Kubernetes集群中的各个节点
[root@master ~]# systemctl daemon-reload 
[root@master ~]# systemctl restart docker
#所有节点都需重新启动服务
[root@master ~]# docker pull httpd
[root@master ~]# docker pull tomcat:8.5.45
[root@master ~]# docker tag httpd:latest 192.168.10.52:5000/httpd:v1
[root@master ~]# docker tag tomcat:8.5.45 192.168.10.52:5000/tomcat:v1
[root@master ~]# docker push 192.168.10.52:5000/httpd:v1
[root@master ~]# docker push 192.168.10.52:5000/tomcat:v1
#下载使用的镜像,并将其上传到私有仓库

2)创建用于测试的Pod

1)创建httpd服务及其service
[root@master ~]# vim httpd.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: test-ns
#创建名称空间test-ns
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: httpd01
  namespace: test-ns
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: httpd-01
    spec:
      containers:
      - name: httpd
        image: 192.168.10.52:5000/httpd:v1
#使用httpd的镜像创建Deployment资源,副本数量为2个,并打标签为httpd-01
---
apiVersion: v1
kind: Service
metadata:
  name: httpd-svc
  namespace: test-ns
spec:
  selector:
    app: httpd-01
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
#创建service资源对象与Deployment资源使用标签的方式进行关联
[root@master ~]# kubectl apply -f htt
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ingress-Nginx是一种Kubernetes中的Ingress控制器,用于管理入站流量,并将流量路由到Kubernetes集群中的服务。以下是部署Ingress-Nginx的步骤: 1. 安装Ingress-Nginx控制器。 使用以下命令安装控制器: ``` kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/cloud/deploy.yaml ``` 该命令将部署Ingress-Nginx维护的最新版本的控制器。 2. 验证控制器安装。 使用以下命令验证控制器是否已成功安装: ``` kubectl get pods -n ingress-nginx ``` 如果控制器已成功安装,则应看到类似于以下内容的输出: ``` NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-8gmgc 0/1 Completed 0 2m ingress-nginx-admission-patch-q8v2m 0/1 Completed 0 2m ingress-nginx-controller-5b4bcf79d8-9qz7j 1/1 Running 0 2m ``` 3. 部署应用程序。 使用以下命令部署您的应用程序: ``` kubectl apply -f your-application.yaml ``` 该命令将使用您的应用程序配置文件中指定的服务和端口部署应用程序。 4. 部署Ingress资源。 使用以下命令部署Ingress资源: ``` kubectl apply -f your-ingress.yaml ``` 该命令将使用您的Ingress配置文件中指定的规则和路径将流量路由到您的应用程序。 5. 验证Ingress是否生效。 使用以下命令验证Ingress是否已成功生效: ``` kubectl get ingress ``` 如果Ingress已成功生效,则应看到类似于以下内容的输出: ``` NAME HOSTS ADDRESS PORTS AGE your-ingress * 192.168.50.10 80 2m ``` 这意味着您的应用程序现在可以通过Ingress访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值