Kubernetes - Ingress HTTP 负载搭建部署解决方案(新版本v1.21+)

在看这一篇之前,如果不了解 Ingress 在 K8s 当中的职责,建议看之前的一篇针对旧版本 Ingress 的部署搭建,在开头会提到它的一些简介Kubernetes - Ingress HTTP 负载搭建部署解决方案_放羊的牧码的博客-CSDN博客

开始表演

1、kubeasz 一键安装部署 Ingress

bash 复制代码
kubectl apply -f https://raw.githubusercontent.com/qist/k8s/main/k8s-yaml/ingress-nginx/ingress-nginx-ipv4.yaml

2、安装我们的服务应用 Service 对应的 Ingress

bash 复制代码
# nginx-ingress-controller-app-service.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-app
  namespace: default # 跟我们的应用 pod 在一个 namespace 即可
  annotations: 
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: api.app.com # 外部可以访问的域名
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app-server # app service name
            port: 
              number: 38080 # app service port
bash 复制代码
kubectl apply -f nginx-ingress-controller-app-service.yaml

3、稍做分析

  • 附:app service yaml
bash 复制代码
kind: Service
apiVersion: v1
metadata:
  name: app-server
  namespace: default
  uid: e462e330-ea68-41ea-b351-71680ea4c685
  resourceVersion: '576970'
  creationTimestamp: '2023-10-26T11:07:01Z'
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"app-server","namespace":"default"},"spec":{"ports":[{"nodePort":38080,"port":38080,"protocol":"TCP","targetPort":38080}],"selector":{"app":"app-server"},"type":"NodePort"}}
  managedFields:
    - manager: kubectl-client-side-apply
      operation: Update
      apiVersion: v1
      time: '2023-10-26T11:07:01Z'
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:annotations:
            .: {}
            f:kubectl.kubernetes.io/last-applied-configuration: {}
        f:spec:
          f:externalTrafficPolicy: {}
          f:internalTrafficPolicy: {}
          f:ports: {}
          f:selector: {}
          f:sessionAffinity: {}
    - manager: dashboard
      operation: Update
      apiVersion: v1
      time: '2023-10-28T10:28:57Z'
      fieldsType: FieldsV1
      fieldsV1:
        f:spec:
          f:ports:
            k:{"port":12345,"protocol":"TCP"}:
              .: {}
              f:port: {}
              f:protocol: {}
              f:targetPort: {}
          f:type: {}
spec:
  ports:
    - protocol: TCP
      port: 12345
      targetPort: 38080
  selector:
    app: app-server
  clusterIP: 10.68.184.146
  clusterIPs:
    - 10.68.184.146
  type: ClusterIP
  sessionAffinity: None
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  internalTrafficPolicy: Cluster
status:
  loadBalancer: {}
  • 重点关注 spec.ports 部分,service 这里的 targetPort = app port,port = ingress port-number
  • 最后,可以用 api.app.com:80 访问即可命中这个程序~ 为什么这里就可以用 80 来访问呢?因为 Ingress-Controller 一键安装完后默认开放了 80、443、8443 端口噢!
  • 彩蛋:如果外部想用 port 12345 来访问 pod 该如何修改配置呢?!前提 38080 不变的情况下~欢迎评论哈!
相关推荐
LQ深蹲不写BUG23 分钟前
微服务事务管理利器:Seata 核心原理与实践指南
微服务·云原生·架构
nathan05291 小时前
Kubernetes 实战练习指南
云原生·容器·kubernetes
無名之輩2 小时前
Nvidia Device Plugin入门二之envvar策略
kubernetes
Linux运维技术栈3 小时前
域名网页加载慢怎么解决:从测速到优化的全链路性能优化实战
运维·网络·nginx·性能优化·cloudflare
云和数据.ChenGuang3 小时前
微服务技术栈
微服务·云原生·架构
syty20203 小时前
K8s是什么
容器·kubernetes·dubbo
荣光波比4 小时前
Nginx 实战系列(六)—— Nginx 性能优化与防盗链配置指南
运维·nginx·性能优化·云计算
江团1io05 小时前
微服务雪崩问题与系统性防御方案
微服务·云原生·架构
Evan Wang6 小时前
使用Terraform管理阿里云基础设施
阿里云·云原生·terraform
向上的车轮6 小时前
基于go语言的云原生TodoList Demo 项目,验证云原生核心特性
开发语言·云原生·golang