Kubernetes服务速查表

时间:2020-01-09 10:34:21  来源:igfitidea点击:

说明

Kubernetes服务用于将Pod暴露在集群之外。记住如何编写服务清单的结构可能很困难,并且除结构之外,仅记住使用哪个apiVersion可能更具挑战性。

在本文中,我们将学习如何构建服务清单,以及如何使用kubectl create命令动态地动态生成一个清单。

服务清单

典型的Kubernetes配置清单被编写并存储为YAML文件。服务清单的结构将类似于以下示例。

apiVersion: v1
kind: Service
metadata:
  name: hello-world-service
spec:
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http

生成LoadBalancer服务

要使用kubectl生成负载平衡器类型的服务,请使用以下命令。 --dry-run标志阻止kubectl向Kubernetes api-controller发送请求,而-o yaml标志指示kubectl在YAML中输出结​​果。

kubectl create service loadbalancer my-service --tcp=80:3000 --dry-run -o yaml

上面的示例将为具有以下属性的服务生成配置:

  • 负载平衡器类型
  • 命名为hello-world-service
  • 服务端口80
  • 定位后端端口3000

该命令的输出将类似于以下内容:

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: my-service
  name: my-service
spec:
  ports:
  - name: 80-3000
    port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app: my-service
  type: LoadBalancer
status:
  loadBalancer: {}

在使用配置文件之前,需要进行一点清理。 Kubernetes集群的许多字段不应作为配置存储。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: my-service
  name: my-service
spec:
  ports:
  - name: 80-3000
    port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app: my-service
  type: LoadBalancer

生成NodePort服务

生成NodePort服务与LoadBalancer服务器相同,唯一的区别是在命令中使用的是nodeport而不是loadbalancer。

kubectl create service nodeport my-service --tcp=80:3000 --dry-run -o yaml

生成ClusterIP服务配置

与负载平衡器类型和节点端口类型一样,使用以下命令生成ClusterIP类型。

kubectl create service clusterip my-service --tcp=80:3000 --dry-run -o yaml