我试图在Kubernetes环境中调度cron作业,并且我希望在内部访问服务,而不是通过集群外部的负载均衡器。下面是我在YAML中定义的服务的一个例子:
---
apiVersion: v1
kind: Service
metadata:
name: stage-api-svc
labels:
run: stage-api
annotations:
service.beta.kubernetes.io/do-loadbalancer-protocol: "http"
service.beta.kubernetes.io/do-loadbalancer-redirect-http-to-https: "true"
service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
service.beta.kubernetes.io/do-loadbalancer-sticky-sessions-cookie-name: "stage-cloud"
service.beta.kubernetes.io/do-loadbalancer-sticky-sessions-cookie-ttl: "380"
service.beta.kubernetes.io/do-loadbalancer-healthcheck-path: "/status"
spec:
selector:
special: stage-api-svc
type: LoadBalancer
ports:
- name: http
port: 443
targetPort: 8443
我在其他类似问题的评论中读到,我可以使用special
选择器来引用该服务。在我的情况下,我会打电话:
curl -H "InternalUser: true" -X GET "http://stage-api-svc:8443/cron"
但是,这似乎不起作用,所以我想知道是否在服务定义中使用了正确的选择器值来引用它。
1条答案
按热度按时间zkure5ic1#
如果您尝试访问k8s集群中的服务,则应使用use service port
443
而不是8443
。还要确保:targetPort
正确Map到Pod的容器端口http://stage-api-svc.namespace-name:443/cron
Service
中使用的selectorLabels
正确指向Pod的标签。