首页 > 其他分享 >在K8S中,服务是如何发布的?

在K8S中,服务是如何发布的?

时间:2024-07-29 18:19:02浏览次数:15  
标签:服务 Service service 发布 NodePort Kubernetes K8S my

在K8S中,服务的发布包括定义Service资源、创建Service对象、配置路由规则以及通过Service的ClusterIP或NodePort暴露服务给外部访问

下面将详细探讨这一过程:

  1. 定义Service资源

    • Resource Definition:在Kubernetes中,要发布一个服务,首先需要定义一个Service资源。这通常是通过YAML或JSON文件来完成的。以下是一个典型的Service定义文件示例:

      apiVersion: v1
      kind: Service
      metadata:
        name: my-service
      spec:
        selector:
          app: MyApp
        ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      

      这个文件定义了一个名为my-service的服务,它通过标签选择器app: MyApp找到对应的Pods,并将外部访问的80端口映射到Pod的8080端口[1]。

  2. 创建Service对象

    • Creation and Configuration:通过上述配置文件,可以使用kubectl apply -f <filename>.yaml命令创建Service对象。Kubernetes会根据配置文件中的spec字段信息,自动为所选的Pod集合创建一个虚拟IP地址(ClusterIP),并配置相应的端口映射规则[1]。
    • Endpoints Creation:当Service被创建后,Kubernetes还会相应地创建一个Endpoints资源,用于存储实际后端Pod的IP地址和端口号。这样,Service就可以正确地将流量转发到这些Pod上[1]。
  3. 配置路由规则

    • Internal Routing:Service创建后,Kubernetes会在内部DNS中为该Service注册一个域名,使得其他Pod可以通过这个域名访问到该Service。例如,my-service.default.svc.cluster.local将会解析到Service的Cluster IP上[5]。
    • External Access:如果需要从集群外部访问Service,可以将Service类型设置为NodePortLoadBalancerNodePort将在每个节点上打开一个相同端口,而LoadBalancer则会在支持的云平台上创建一个外部负载均衡器[1][2]。
  4. 暴露服务给外部访问

    • NodePort Example:以下是一个将服务通过NodePort暴露给外部的例子:

      apiVersion: v1
      kind: Service
      metadata:
        name: my-nodeport-service
      spec:
        selector:
          app: MyApp
        type: NodePort
        ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      

      使用kubectl apply -f <filename>.yaml创建后,你可以通过任意节点的IP地址和NodePort来访问服务,例如<Node-IP>:<NodePort>[2]。

    • Ingress for HTTP:对于HTTP服务,还可以使用Ingress资源来管理外部访问。Ingress可以配置URL路径、负载均衡、SSL终止等高级功能。例如:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          ingress.kubernetes.io/rewrite-target: /
        name: my-ingress
      spec:
        rules:
        - http:
          paths:
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: my-service
                port:
                  number: 80
      

      通过应用这个YAML文件,所有到Ingress的/路径的请求都会被转发到my-service服务的80端口上[5]。

综上所述,Kubernetes通过Service和相关的网络配置,提供了灵活的服务发布机制,不仅确保了容器应用的高可用性和可扩展性,还大大简化了网络层的管理和维护工作。了解并掌握如何正确发布服务,是有效利用Kubernetes进行集群管理的关键步骤。

标签:服务,Service,service,发布,NodePort,Kubernetes,K8S,my
From: https://www.cnblogs.com/huangjiabobk/p/18330746

相关文章

  • 在K8S中,DNS组件有什么特性?
    在Kubernetes(K8S)中,DNS组件是集群的核心组成部分之一,它负责提供服务发现的功能,使Pod和服务能够通过域名相互通信。Kubernetes的DNS组件主要由以下几个部分组成:DNS服务器:kube-dns或coredns是Kubernetes社区中最常用的DNS服务器实现。DNS服务器监听在集群......
  • 在K8S中,在容器内如何获取pod和namespace名字?
    在K8S中,可以通过DownwardAPI将Pod和Namespace的名字注入到容器内的环境变量或文件中。这种方法允许容器内部的应用直接访问这些信息,从而进行相应的配置或处理。具体技术介绍如下:环境变量获取获取Pod名称:在Pod的配置中,可以通过设置一个环境变量,将Pod的名称注入到容器内。例......
  • kubeadm安装部署K8S-1.30.2
    1、环境准备1.1、节点规划#CentOSLinuxrelease7.9.2009(Core)master0110.202.30.22 #4C8Gnode0110.202.30.30 #4C8Gnode0210.202.30.31 #4C8G1.2、配置hosts主机名解析#vim/etc/hosts10.202.30.22master0110.202.30.30nod......
  • 生成式人工智能服务管理暂行办法
     生成式人工智能服务管理暂行办法》的介绍,该办法由中国国家互联网信息办公室等多个部门联合发布,自2023年8月15日起施行。以下是对该办法的主要内容总结:1.**目的和适用范围**:-旨在促进生成式人工智能的健康发展和规范应用,维护国家安全和社会公共利益,保护公民、法人和其他组......
  • 奇迹SF:发布网www.sfl223.cn,奇迹MU私服来袭!31
           奇迹SF:发布网www.sfl223.cn,奇迹MU私服来袭!95       奇迹SF:发布网www.sfl223.cn奇迹MU私服来袭!......
  • 奇迹SF:发布网www.sfl223.cn,奇迹MU私服来袭!4
           奇迹SF:发布网www.sfl223.cn,奇迹MU私服来袭!84       奇迹SF:发布网www.sfl223.cn奇迹MU私服来袭!......
  • 云原生周刊:Cilium v1.16.0 发布|20240729
    开源项目CyclopsCyclops是一个开源的开发工具,通过易于使用的用户界面简化了Kubernetes,使其更易上手。不再需要使用YAML创建和配置Kubernetes清单,可以使用Cyclops轻松配置和部署应用程序,还包括验证功能!KubetailKubetail是一个用于Kubernetes集群的私有实时日志查看......
  • 记录|云端服务器和局域网服务器的评估
    目录前言一、云端服务器1.1什么是云端服务器?1.1.1产生情景1.2作用和消耗1.2.1推荐购买1.3小程序和app1.3.1如何判断是否需要云端服务器二、局域网服务器1.1特点1.2使用局域网的原因1.3其他考虑更新时间前言参考文章阿里云对云服务器解释项目中需......
  • 发布npm包流程
    npm发布包流程背景:假设你写了一些js方法想发布参考:https://www.youtube.com/watch?v=xnfdm-s8adI、1.初始化环境mkdirmethodjscdmethodjsnpminit-ynpmi-Dtsup@5typescript@4#node<14时的兼容版本,tsup用于编译打包ts代码#确保用的是npm地址npmconfig......
  • k8s修改pod的内核参数以优化服务网络性能
    k8s修改pod的内核参数以优化服务网络性能1、面对高并发场景:TIME_WAIT连接复用如果短连接并发量较高,它所在netns中TIME_WAIT状态的连接就比较多,而TIME_WAIT连接默认要等2MSL时长才释放,长时间占用源端口,当这种状态连接数量累积到超过一定量之后可能会导致无法新建连接。所......