kubernetes - 如何明确定义 Kubernetes 服务的端点
问题描述
我已经通过 kubespray 在我自己的几个虚拟机上配置了一个 kubernetes 集群。Kubespray 使用 project-calico 作为默认的网络插件,它非常适合我将集群网络中的服务代理到外部世界的要求。
Kubespray 将 apiserver 本身部署为 ClusterIP 服务。为了使它可以从外部访问,它使用主节点主机 IP 地址定义了此服务的端点,据我所知,Calico 将其路由到内部 ClusterIP。
我的问题是:如何定义我自己的端点(用于另一个服务),因为这些端点已经通过配置 service.yaml 得到隐式定义并且不能被覆盖。我想采用类似的方法让我的 Rook/Ceph Dashboard 从集群外部可见。
编辑:注意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>
解决方案
我会参考你的问题:
如何定义我自己的端点?
你必须:
1 ) 创建一个没有 Pod 选择器的服务:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- protocol: TCP
port: 8080
targetPort: 9376
(此时,K8S 不会创建自动生成的 Endpoints,因为它无法决定这些 Endpoints 应该引用哪些 Pod)。
2)创建一个Endpoints
对象并将其映射到外部资源正在运行的所需网络地址和端口:
apiVersion: v1
kind: Endpoints
metadata:
name: my-service
subsets:
- addresses:
- ip: 192.0.2.45
ports:
- port: 9376
(*) 请注意,服务名称和 Endpoints 对象的名称应该匹配。
推荐阅读
- discord - Discord.py True Key 权限
- python - 我正在尝试制作一个可以发送嵌入的 selfbot
- python - 如何在没有 pip 的情况下安装 virtualenv?
- android - 如何解决 W/NetworkRequest:尝试从 Firebase 存储下载图像时出错
- graphql - GraphQL - 为每个项目选择返回列表的不同字段
- google-apps-script - 在第二张纸上显示一张纸的一部分(保持条件格式)
- matlab - Matlab上的高斯系数对图像的卷积
- javascript - CSS背景图片幻灯片
- android - 主activity.kt中的Android Studio新项目错误(基本活动)
- ios - iOS 14 在 Flutter 上使用带有 google admob 的横幅广告时崩溃