黑帽联盟

 找回密码
 会员注册
查看: 70|回复: 0
打印 上一主题 下一主题

[资源教程] k8s 通过statefulset和headless,ingress可以直连pod

[复制链接]

895

主题

38

听众

3324

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    开心
    昨天 22:18
  • 签到天数: 1645 天

    [LV.Master]伴坛终老

    在Kubernetes中,StatefulSets通常用于运行有状态的应用程序,它能够保持Pod的顺序和唯一性。Headless Service是一种不带外部负载均衡器的服务,它通过DNS解析提供了一种方式来直接访问Pod。Ingress可以提供HTTP和HTTPS的负载均衡器,并且可以将请求路由到内部服务。


    要通过StatefulSet和Headless Service结合Ingress直接连接Pod,你需要执行以下步骤:


    创建一个Headless Service,以便可以通过DNS解析直接访问Pod。


    创建一个Ingress资源,以允许外部流量访问你的服务。


    创建一个StatefulSet,以部署你的应用程序。


    以下是一个简单的示例:
    # Headless Service
    apiVersion: v1
    kind: Service
    metadata:
      name: my-headless-service
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: my-app


    # Ingress
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-ingress
    spec:
      rules:
      - host: my.service.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-headless-service

                port:
                  number: 80

    # StatefulSet
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: my-statefulset
    spec:
      selector:
        matchLabels:
          app: my-app
      serviceName: "my-headless-service"

      replicas: 3
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - name: my-container
            image: my-image
            ports:
            - containerPort: 80
    在这个例子中,首先定义了一个Headless Service,指定clusterIP为None,这样就不会为Service分配一个集群IP,而是通过DNS解析直接到达Pod。然后定义了一个Ingress,它将流量路由到Headless Service。最后,创建了一个StatefulSet,它的serviceName与Headless Service的名字相同,以保证Pod的网络标识符与服务正确匹配。

    这样,你就可以通过<pod-name>.my-headless-service.default.svc.cluster.local的方式来访问Pod,然后通过Ingress的域名my.service.com来访问你的应用程序,Ingress将流量路由到Headless Service,然后Service进一步将流量路由到具体的Pod。


    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    勿忘初心,方得始终!
    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部