码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

    1. # nginx-ingress-controller-app-service.yaml
    2. apiVersion: networking.k8s.io/v1
    3. kind: Ingress
    4. metadata:
    5. name: ingress-app
    6. namespace: default # 跟我们的应用 pod 在一个 namespace 即可
    7. annotations:
    8. kubernetes.io/ingress.class: "nginx"
    9. spec:
    10. rules:
    11. - host: api.app.com # 外部可以访问的域名
    12. http:
    13. paths:
    14. - path: /
    15. pathType: Prefix
    16. backend:
    17. service:
    18. name: app-server # app service name
    19. port:
    20. number: 38080 # app service port
    kubectl apply -f nginx-ingress-controller-app-service.yaml

    3、稍做分析

    • 附:app service yaml
    1. kind: Service
    2. apiVersion: v1
    3. metadata:
    4. name: app-server
    5. namespace: default
    6. uid: e462e330-ea68-41ea-b351-71680ea4c685
    7. resourceVersion: '576970'
    8. creationTimestamp: '2023-10-26T11:07:01Z'
    9. annotations:
    10. kubectl.kubernetes.io/last-applied-configuration: >
    11. {"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"}}
    12. managedFields:
    13. - manager: kubectl-client-side-apply
    14. operation: Update
    15. apiVersion: v1
    16. time: '2023-10-26T11:07:01Z'
    17. fieldsType: FieldsV1
    18. fieldsV1:
    19. f:metadata:
    20. f:annotations:
    21. .: {}
    22. f:kubectl.kubernetes.io/last-applied-configuration: {}
    23. f:spec:
    24. f:externalTrafficPolicy: {}
    25. f:internalTrafficPolicy: {}
    26. f:ports: {}
    27. f:selector: {}
    28. f:sessionAffinity: {}
    29. - manager: dashboard
    30. operation: Update
    31. apiVersion: v1
    32. time: '2023-10-28T10:28:57Z'
    33. fieldsType: FieldsV1
    34. fieldsV1:
    35. f:spec:
    36. f:ports:
    37. k:{"port":12345,"protocol":"TCP"}:
    38. .: {}
    39. f:port: {}
    40. f:protocol: {}
    41. f:targetPort: {}
    42. f:type: {}
    43. spec:
    44. ports:
    45. - protocol: TCP
    46. port: 12345
    47. targetPort: 38080
    48. selector:
    49. app: app-server
    50. clusterIP: 10.68.184.146
    51. clusterIPs:
    52. - 10.68.184.146
    53. type: ClusterIP
    54. sessionAffinity: None
    55. ipFamilies:
    56. - IPv4
    57. ipFamilyPolicy: SingleStack
    58. internalTrafficPolicy: Cluster
    59. status:
    60. loadBalancer: {}
    • 重点关注 spec.ports 部分,service 这里的 targetPort = app port,port =  ingress port-number
    • 最后,可以用 api.app.com:80 访问即可命中这个程序~ 为什么这里就可以用 80 来访问呢?因为 Ingress-Controller 一键安装完后默认开放了 80、443、8443 端口噢!

    彩蛋

    • 结论一、Service 中 NodePort 方式和 Ingress 方式可同时存在并依然有效
    • 结论二、在结论一的基础上,可以使用 NodePort 的方式设置 nodePort 端口,外部可直接用该 nodePort 来访问 Pod
    • 结论三、如果是 NodePort 方式,但不设置 nodePort,系统会随机给它生成一个对外端口号
    1. # 通过命令查询随机生成的端口号
    2. kubectl get svc

    • 如果用 Ingress 技术来作为外部想用 port 12345 来访问 pod 该如何修改配置呢?!前提 38080 不变的情况下~欢迎评论哈!
  • 相关阅读:
    安科瑞餐饮油烟监测云平台助力大气污染防治攻坚战
    shutil concurrent.futures multiprocessing subprocess itertools 简介 区别
    Navicat 查询创建工具 | 使用聚合输出字段-Part 4
    小小开发板承载万千创新可能,小熊派的云上奇遇记
    条件覆盖:每个判定的每个条件应取到各种可能的值。 (包含语句覆盖,每个条件T、F各一次)
    进销存记账软件十大品牌合集,看看哪一款适合你
    shell脚本练习
    npx 和 npm 区别
    OpenCV的轮廓检测和阈值处理综合运用
    C#Socket
  • 原文地址:https://blog.csdn.net/Dream_Weave/article/details/134095304
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号