对于调度到子集群中的服务, 我们可以在父集群中通过服务名称或者cluster ip直接访问.
MultiClusterService
在clusternet-agent
和clusternet-controller-manager
侧都是true
,你可以直接编辑clusternet-agent
和clusternet-controller-manager
这
两个deployment:--feature-gates=xxx,MultiClusterService=true
请参考 this example. 来部署应用.
$ kubectl clusternet apply -f examples/scheduling-with-mcs-api/scheduling
namespace/baz created
deployment.apps/my-nginx created
service/my-nginx-svc created
serviceexport.multicluster.x-k8s.io/my-nginx-svc created
subscription.apps.clusternet.io/scheduling-with-mcs-api created
在父集群中部署serviceimport资源,需要在labels指明需要引出的服务名称和它在子集群中的命名空间:
apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceImport
metadata:
name: my-svc
namespace: default
labels:
services.clusternet.io/multi-cluster-service-name: my-nginx-svc # must be same to the service name you want to expose
services.clusternet.io/multi-cluster-service-namespace: baz # must be same to the service namespace
spec:
ips:
- 42.42.42.42
type: "ClusterSetIP"
ports:
- port: 80
protocol: TCP
sessionAffinity: None
$ kubectl create -f examples/scheduling-with-mcs-api/service-import.yaml
serviceimport.multicluster.x-k8s.io/my-svc created
现在可以检验由clusternet
自动生成的service资源和endpointslice资源, 服务名称以derived-
开头:
root@worker-cluster1-1:~/clusternet# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
derived-baz-tc8hmv632j ClusterIP 10.11.178.229 <none> 80/TCP 1d
kubernetes ClusterIP 10.11.0.1 <none> 443/TCP 306d
root@worker-cluster1-1:~/clusternet# kubectl get svc derived-baz-tc8hmv632j -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2022-09-01T07:42:31Z"
name: derived-baz-tc8hmv632j
namespace: default
resourceVersion: "100369299"
selfLink: /api/v1/namespaces/default/services/derived-baz-tc8hmv632j
uid: 91c19b02-c15b-4166-9bcc-6931d0859723
spec:
clusterIP: 10.11.178.229
clusterIPs:
- 10.11.178.229
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- port: 80
protocol: TCP
targetPort: 80
sessionAffinity: None
type: ClusterIP
status:
loadBalancer:
ingress:
- ip: 42.42.42.42
可以看到endpointslice资源已经打上了该label: kubernetes.io/service-name: derived-baz-tc8hmv632j
$ kubectl get endpointslice -l kubernetes.io/service-name=derived-baz-tc8hmv632j
NAME ADDRESSTYPE PORTS ENDPOINTS AGE
clusternet-s5cmf-baz-my-nginx-svc-4rg6x IPv4 80 10.244.1.36,10.244.1.40,10.244.1.38 + 3 more... 10m
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.