• (2022版)一套教程搞定k8s安装到实战 | Service


    视频来源:B站《(2022版)最新、最全、最详细的KubernetesK8s)教程,从K8s安装到实战一套搞定》

    一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

    附上汇总贴:(2022版)一套教程搞定k8s安装到实战 | 汇总_COCOgsta的博客-CSDN博客


    什么是Service?

    Service可以简单的理解为逻辑上的一组Pod。一种可以访问Pod的策略,而且其他Pod可以通过这个Service访问到这个Service代理的Pod。相对于Pod而言,它会有一个固定的名称,一旦创建就固定不变。

    创建一个Service

    nginx-svc.yaml

    1. apiVersion: v1
    2. kind: Service
    3. metadata:
    4. labels:
    5. app: nginx-svc
    6. name: nginx-svc
    7. spec:
    8. ports:
    9. - name: http # Service端口的名称
    10. port: 80 # Service自己的端口,servicea --> serviceb http://serviceb,http://serviceb:8080
    11. protocol: TCP # UDP TCP SCTP default:TCP
    12. targetPort: 80 # 后端应用的端口
    13. - name: https
    14. port: 443
    15. protocol: TCP
    16. targetPort: 443
    17. selector:
    18. app: nginx
    19. sessionAffinity: None
    20. type: ClusterIP
    21. 复制代码

    使用Service代理k8s外部应用

    希望在生产环境中使用某个固定的名称而非IP地址进行访问外部的中间件服务

    希望Service指向另一个Namespace中或其他集群中的服务(不推荐,建议使用.的形式访问)

    某个项目正在迁移至k8s集群,但是一部分服务仍然在集群外部,此时可以使用service代理至k8s集群外部的服务

    nginx-svc-external.yaml

    1. apiVersion: v1
    2. kind: Service
    3. metadata:
    4. labels:
    5. app: nginx-svc-external
    6. name: nginx-svc-external
    7. spec:
    8. ports:
    9. - name: http # Service端口的名称
    10. port: 80
    11. protocol: TCP
    12. targetPort: 80 #后端应用的端口
    13. sessionAffinity: None
    14. type: ClusterIP
    15. 复制代码

    nginx-ep-external.yaml

    1. apiVersion: v1
    2. kind: Endpoints
    3. metadata:
    4. labels:
    5. app: nginx-svc-external
    6. name: nginx-svc-external
    7. namespace: default
    8. subsets:
    9. - addresses:
    10. - ip: 39.156.69.79
    11. ports:
    12. - name: http
    13. port: 80
    14. protocol: TCP
    15. 复制代码

    使用Service反代域名

    nginx-externalName.yaml

    1. apiVersion: v1
    2. kind: Service
    3. meatadata:
    4. labels:
    5. app: nginx-externalname
    6. name: nginx-externalname
    7. spec:
    8. type: ExternalName
    9. externalName: www.baidu.com
    10. 复制代码

    Service类型

    ClusterIP:在集群内部使用,也是默认值。

    ExternalName:通过返回定义的CNAME别名。

    NodePort:在所有安装了kube-proxy的节点上打开一个端口,此端口可以代理至后端Pod,然后集群外部可以使用节点的IP地址和NodePort的端口号访问集群Pod服务。NodePort端口范围默认视30000-32767。

    LoadBalance:使用云提供商的负载均衡器公开服务。

  • 相关阅读:
    【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包
    LVGL库入门教程 - 颜色和图像
    关于亚马逊云科技云技能学习
    Elasticsearch学习(一)
    【webrtc】rtp包组帧
    深入理解Django:中间件与信号处理的艺术
    设计模式之装饰器模式
    传奇XO引擎架设教程
    jQuery学习:基本选择器
    IDEA工具第二篇:自定义Java方法注释模板 | 京东云技术团队
  • 原文地址:https://blog.csdn.net/guolianggsta/article/details/126435723