当前位置: 首页 > article >正文

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

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

 开始表演

1、kubeasz 一键安装部署 Ingress

kubectl apply -f https://raw.githubusercontent.com/qist/k8s/main/k8s-yaml/ingress-nginx/ingress-nginx-ipv4.yaml
  • 如果因为网络问题,建议先下载 ingress-nginx-ipv4.yaml 到 Linux 里面先,然后再执行即可
  • 如果之前对 kubeasz 脚手架没了解,建议可以先看看这篇文章噢~ Kubernetes - 一键安装部署 K8S(附:Kubernetes Dashboard)-CSDN博客文章浏览阅读792次。Kubernetes - 一键安装部署 K8S(附:Kubernetes Dashboard)https://lux-sun.blog.csdn.net/article/details/134000358

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

# 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
kubectl apply -f nginx-ingress-controller-app-service.yaml

3、稍做分析

  • 附:app service yaml
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 不变的情况下~欢迎评论哈!

http://www.kler.cn/a/107478.html

相关文章:

  • 越南很火的slots游戏投放Google谷歌广告策略
  • 会话信息处理: HttpSession、token序列化、收集登录设备信息、基于`spring-session-data-redis`实现session共享。
  • goframe开发一个企业网站 验证码17
  • C++中的std::tuple和std::pair
  • 华为云前台用户可挂载数据盘和系统盘是怎么做到的?
  • C++编程:利用环形缓冲区优化 TCP 发送流程,避免 Short Write 问题
  • [双指针] Leetcode 283.移动零和1089.复习零
  • 设计模式:访问者模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
  • AT32固件库外设使用,ArduinoAPI接口移植,模块化
  • windows服务器环境下使用php调用com组件
  • 【springBoot】博客系统
  • 10000字!图解机器学习特征工程
  • Vmware下的虚拟机NAT连接后仍然木有网络
  • Redis的过期键删除策略看这一篇就足够了
  • Could not update Flowable database schema: unknown version from database:
  • C++——类和对象(中)(2)尚未完结
  • Angular-02:环境等说明
  • Crawler4j实例爬取爱奇艺热播剧案例
  • 技术栈 业务架构 插件库
  • mac电脑怎么永久性彻底删除文件?
  • AI与Prompt:解锁软件开发团队的魔法咒语,在复杂任务上生成正确率更高的代码
  • 如何能在项目具体编码实现之前能尽可能早的发现问题并解决问题
  • jenkins自动化操作步骤(gitblit)
  • SDK 资源
  • 文本处理方法及其在NLP中的应用
  • 获取IEEE会议论文的标题和摘要