如何明确定义Kubernetes服务的端点

我已经通过kubespray在自己的几个虚拟机上配置了kubernetes集群。 Kubespray使用project-calico作为默认的网络插件,非常符合我对集群网络中的代理服务到外部世界的要求。

Kubespray将apiserver本身部署为ClusterIP服务。为了使其从外部可访问,使用主节点Host IP Adress定义了该服务的端点,据我个人判断,该路由由Calico路由到内部ClusterIP。

我的问题是:如何定义我自己的端点(用于另一个服务),因为通过提供service.yaml已经隐式定义了这些端点,并且不能覆盖它们。我想采用类似的方法从群集外部显示我的Rook / Ceph仪表板。

编辑:请注意,kubectl get ingresses.networking.k8s.io --all-namespaces返回No resources found.,而kubectl describe service kubernete返回

Name:              kubernetes
Namespace:         default
Labels:            component=apiserver
                   provider=kubernetes
Annotations:       <none>
Selector:          <none>
Type:              ClusterIP
IP:                10.233.0.1
Port:              https  443/TCP
TargetPort:        6443/TCP
Endpoints:         192.168.103.254:6443
Session Affinity:  None
Events:            <none>
opqissmart 回答:如何明确定义Kubernetes服务的端点

我不确定您的意思是什么,但是我认为您正在寻找的是在外部公开服务的能力。

您可以使用“发布服务”(在外部公开内部服务的服务类型)公开Rook / Ceph仪表板等服务。

引自kubernetes文档:

  

对于应用程序的某些部分(例如,前端),您可以   想要将服务公开到外部的外部IP地址上   集群中的一个。

     

Kubernetes ServiceTypes允许您指定哪种服务   你要。默认值为ClusterIP

     

Type值及其行为为:

     
      
  • ClusterIP:在群集内部IP上公开服务。选择此值将使该服务仅可从   簇。这是默认的ServiceType
  •   
  • NodePort:   在静态端口上将服务公开到每个节点的IP上(   NodePort)。 ClusterIP的{​​{1}}服务   服务路线,是自动创建的。您将可以联系   通过请求从群集外部的NodePort服务   NodePort
  •   
  • LoadBalancer:   使用云提供商的负载平衡器对外公开服务。   <NodeIP>:<NodePort>NodePort服务,外部负载   平衡器路线会自动创建。
  •   
  • ExternalName:   将服务映射到ClusterIP字段的内容(例如   externalName),方法是返回带有其值的foo.bar.example.com记录。没有设置任何代理。
  •   

这里是文档中的example


您还可以使用以下Yaml清单定义CNAME

Services

这将使标签为apiVersion: v1 kind: Service metadata: name: examplelb spec: type: LoadBalancer selector: app: asd ports: - name: koala port: 22223 targetPort: 22225 nodePort: 31913 - name: grisly port: 22224 targetPort: 22226 nodePort: 31914 - name: polar port: 22225 targetPort: 22227 nodePort: 31915 的广告连播具有以下通过模式公开的端口 内部端口app: asd暴露在22223上。

31913

如果类型为$ kubectl get svc examplelb NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE examplelb LoadBalancer 10.111.8.204 <pending> 22223:31913/TCP,22224:31914/TCP,22225:31915/TCP 7d2h 的服务有待处理的外部IP,您仍可以以LoadBalancer的身份访问每个节点上的所有端口。

希望这会有所帮助。

,

我将参考您的问题:

如何定义自己的端点?

您必须:

1)创建没有Pod选择器的服务:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 9376

(此时,K8S不会创建任何自动生成的端点,因为它无法决定这些端点应指向哪些Pod)。

2)创建一个Endpoints对象,并将其映射到运行外部资源的所需网络地址和端口:

apiVersion: v1
kind: Endpoints
metadata:
  name: my-service
subsets:
  - addresses:
      - ip: 192.0.2.45
    ports:
      - port: 9376

(*)请注意,服务名称和Endpoints对象的名称之间应该匹配。

本文链接:https://www.f2er.com/2890797.html

大家都在问