• k8s ingress


    ingress组成

    1. ingress controller   
      将新加入的Ingress转化成Nginx的配置文件并使之生效。
    2. ingress service
      对外暴露ingress controller管理的nginx服务,即把ingress controller
      的pod的80端口和443端口对外暴露,记录这个service的访问入口,即为ingress的访问入口地址。
      Tip:如果是公有云环境中,就需要创建LoadBalancer类型的serviece

    ingress工作原理

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

    ingress实践

    1. 安装 ingress controller
    2. 安装 ingress service
    # EXTERNAL-IP的地址即为ingress的访问入口地址
    k get svc/nginx-ingress-lb -n kube-system
    NAME               TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                      AGE
    nginx-ingress-lb   LoadBalancer   192.168.157.54   172.16.38.132   80:31985/TCP,443:31352/TCP   8d
    
    1. 安装 ingress
    # nginx-deployment
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: svc-test
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:alpine
            ports:
            - containerPort: 80
    
    # nginx-service
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
      namespace: svc-test
    spec:
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 8087
        targetPort: 80
        nodePort: 31557
      type: LoadBalancer
      
    # nginx-ingress  
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: nginx-ingress
      namespace: svc-test
    spec:
      rules:
      - host: demo.localdev.me 
        http:
          paths:
          - path: /
            backend:
              serviceName: nginx-service
              servicePort: 8087
    
    # ADDRESS会自动绑定ingress service的EXTERNAL-IP
    kargo get ing -n svc-test       
    NAME            CLASS    HOSTS              ADDRESS         PORTS   AGE
    nginx-ingress   <none>   demo.localdev.me   172.16.38.132   80      24m
    

    配置好本地host后即可通过域名访问,配置如下:

    demo.localdev.me   172.16.38.132 
    
  • 相关阅读:
    Django模块连接redis
    vue实现拖拽排序
    一看就懂的vue简版源码概述
    MongoDB从入门到实战之MongoDB工作常用操作命令
    python3.12取消setuptools核心包,在pycharm中无法使用virtualenv进行虚拟环境的创建。
    产品经理基础--01认识产品经理
    Python中Tkinter模块的Canvas控件使用学习(3:绘制工艺卡片)
    HBase与Hive数据交互
    推荐系统笔记(十五):pytorch/tensorflow添加随机均匀噪声
    springcloudalibaba-3
  • 原文地址:https://blog.csdn.net/weixin_39869513/article/details/127044957