Kubernetes 教程

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/kubernetes-service.html

Kubernetes 服务(Service)及详解


Service 可以定义为一组逻辑上的 pod。它可以被定义为 pod 顶部的抽象,它提供了一个可以访问 pod 的 IP 地址和 DNS 名称。使用 Service,管理负载均衡配置非常容易。它可以帮助 pod 轻松扩展。

服务是 Kubernetes 中的 REST 对象,其定义可以发布到 Kubernetes 主(master)服务器上的 Kubernetes apiServer 以创建新实例。

不带 Selector 的 Service

apiVersion: v1
kind: Service
metadata:
  name: knowledgedict_service
spec:
  ports:
  - port: 8080
    targetPort: 31999

上述配置将创建一个名为 knowledgedict_service 的服务。

带有 Selector 的 Service

配置文件如下:

apiVersion: v1
kind: Service
metadata:
  name: knowledgedict_service
spec:
  selector:
    application: "My Application" -------------------> (Selector)
  ports:
  - port: 8080
    targetPort: 31999

在这个例子中,我们有一个 selector;所以为了传输流量,我们需要手动创建一个端点(endpoint)。

apiVersion: v1
kind: Endpoints
metadata:
  name: knowledgedict_service
subnets:
  address:
    ip: 192.168.168.40
  ports:
  - port: 8080

在上面的代码中,我们创建了一个端点,它将流量路由到定义为 “192.168.168.40:8080” 的端点。

多端口服务创建

apiVersion: v1
kind: Service
metadata:
  name: knowledgedict_service
spec:
  selector:
    application: "My Application"
  clusterIP: 10.3.0.12
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 31999
  - name:https
    protocol: TCP
    port: 443
    targetPort: 31998

服务类型

ClusterIP - 这有助于限制集群内的服务。它在定义的 Kubernetes 集群中公开服务。

spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 31999
    name: NodeportService

NodePort - 它将在已部署节点的静态端口上公开服务。将自动创建 NodePort 服务将路由到的 ClusterIP 服务。可以使用 NodeIP:nodePort 从集群外部访问该服务。

spec:
  ports:
  - port: 8080
    nodePort: 31999 
    name: NodeportService
  clusterIP: 10.20.30.40

负载均衡器 - 它使用云提供商的负载均衡器。NodePort 和 ClusterIP 服务是自动创建的,外部负载均衡器将路由到这些服务。

服务类型为节点端口的完整服务 yaml 文件。尝试自己创建一个。

apiVersion: v1
kind: Service
metadata:
  name: appname
labels:
  k8s-app: appname
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 31999
    name: omninginx
  selector:
    k8s-app: appname
    component: nginx
  env: env_name

 

节点(node)是 Kubernetes 集群中的工作机器,也称为 minion。它们是工作单元,可以是物理、VM 或云实例。 ...
K8s 的 Namespace 是对一组资源和对象的抽象集合,命名空间为资源名称提供了额外的限定条件。当多个团队使用同一个集群并且存在名称冲 ...
Kubernetes(常简称为 K8s)是用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统,创建以容器为中 ...
我们通过 Spring Cloud 开发项目时,本地调试时想要对测试环境的注册中心进行其他依赖服务的订阅,本身当前项目不想注册到 zooke ...
Kubernetes (Docker) 镜像是容器化基础设施的重要构件组块。到目前为止,我们只支持 Kubernetes 来支持 Docke ...