Kubernetes 服务
可以将服务定义为一组逻辑上的Pod。它可以被视为在Pod之上的抽象,通过它可以提供一个单一的IP地址和DNS名称,从而可以访问Pods。使用服务,非常容易管理负载均衡配置,它帮助Pods轻松扩展。
服务是Kubernetes中的一个REST对象,可以将其定义提交到Kubernetes主节点上的Kubernetes apiServer上以创建新的实例。
无选择器的服务
apiVersion: v1
kind: Service
metadata:
name: Tutorial_point_service
spec:
ports:
- port: 8080
targetPort: 31999
上述配置将创建一个名称为Tutorial_point_service的服务。
带有选择器的服务配置文件
apiVersion: v1
kind: Service
metadata:
name: Tutorial_point_service
spec:
selector:
application: "My Application" -------------------> (Selector)
ports:
- port: 8080
targetPort: 31999
在这个示例中,我们有一个选择器;因此为了传输流量,我们需要手动创建一个端点。
apiVersion: v1
kind: Endpoints
metadata:
name: Tutorial_point_service
subnets:
address:
"ip": "192.168.168.40" -------------------> (Selector)
ports:
- port: 8080
在以上代码中,我们创建了一个端点,将流量路由到定义为“192.168.168.40:8080”的端点。
多端口服务创建
apiVersion: v1
kind: Service
metadata:
name: Tutorial_point_service
spec:
selector:
application: “My Application” -------------------> (Selector)
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 文件,服务类型为Node Port。请自行尝试创建一个。
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