Kubernetes-11 K8s的Ingress

前言

如果我们想让外部可以访问Pod,需要通过SVC的NodePort模式暴露IP+端口号来实现。

  • 在每个节点上都会启动端口
  • 在访问的时候通过任何节点,通过IP+端口号就能实现

但NodePort还存在这一些缺陷

  • 端口不能重复,所以每个端口只能用一次,一个端口对应一个应用
  • 实际访问都是通过域名,根据不同域名跳转到不同端口服务中

Ingress和Pod的关系

Pod和Ingress是通过Service进行关联的,而Ingress作为统一入口,由Service管理一组Pod。在这里插入图片描述

  • 首先SVC通过label标签关联一组Pod
  • 然后Ingress作为入口,首先需要关联到SVC,然后发现一组Pod
  • 发现Pod以后,就可以做负载均衡

Ingress工作流程

在实际访问中,我们需要维护很多域名,a.com,b.com。然后不同的域名对应不同的SVC,然后SVC管理不同的Pod
在这里插入图片描述
注意:
Ingress不是内置组件,需要我们单独安装Ingress插件

部署使用Ingress

这里我们使用Ingress-Nignx

  • 安装Ingress Controller
  • 创建Ingress规则(通过标签发现)

首先创建一个Nginx的Deployment和SVC和Tomcat的Deployent和SVC

## nginx-deployment的yaml
cat dep-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      run: nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80
## tomcat的deployment的yaml
cat dep-tomcat.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat
spec:
  selector:
    matchLabels:
      run: tomcat
  replicas: 2
  template:
    metadata:
      labels:
        run: tomcat
    spec:
      containers:
      - name: tomcat
        image: tomcat
        ports:
        - containerPort: 8080
## nginx的svc
cat svc-nginx.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: web
  name: nginx
spec:
  ports:
  - port: 80
    name: web-nginx
  type: NodePort
  selector:
    run: nginx
## tomcat的svc
apiVersion: v1
kind: Service
metadata:
  labels:
    app: web
  name: tomcat
spec:
  ports:
  - port: 80
    name: web-tomcat
    targetPort: 8080
  type: NodePort
  selector:
    run: tomcat

引用yaml文件

kubectl apply -f dep-nginx.yaml dep-tomcat.yaml nginx-svc.yaml tomcat-svc.yaml
kubectl get svc,pod

在这里插入图片描述

kubectl get pod -o wide 
kubectl describe svc nginx
kubectl describe svc tomcat

在这里插入图片描述

可以看到已经部署成功了,并且SVC已经和Pod关联成功
在这里插入图片描述
在这里插入图片描述

部署Ingress-Nginx

##插件yaml
cat mandatory.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: ingress-nginx
  labels:
    app.kubernetes.io/name: in
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值