Open 13567436138 opened 8 months ago
Hi, there are a few updates recently(bug fix related), can you try with the latest version(master branch).
I try the following yaml, and it works fine:
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
targetPort: 80
selector:
app: nginx
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: nginx-svc
spec:
propagateDeps: true
resourceSelectors:
- apiVersion: v1
kind: Service
name: nginx
placement:
clusterAffinity:
clusterNames:
- member1
- member2
---
apiVersion: v1
kind: Service
metadata:
name: nginx-headless
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: nginx-svc-headless
spec:
propagateDeps: true
resourceSelectors:
- apiVersion: v1
kind: Service
name: nginx-headless
placement:
clusterAffinity:
clusterNames:
- member1
- member2
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
ordinals:
start: 0
selector:
matchLabels:
app: nginx
serviceName: "nginx-headless"
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: nginx-deploy
spec:
propagateDeps: true
failover:
application:
decisionConditions:
tolerationSeconds: 300
gracePeriodSeconds: 10
purgeMode: Graciously
resourceSelectors:
- apiVersion: apps/v1
kind: StatefulSet
name: web
placement:
clusterAffinity:
clusterNames:
- member1
- member2
---
#apiVersion: policy.karmada.io/v1alpha1
#kind: OverridePolicy
#metadata:
# name: nginx-member2
#spec:
# resourceSelectors:
# - apiVersion: apps/v1
# kind: StatefulSet
# name: web
# targetCluster:
# clusterNames:
# - member2
# overriders:
# plaintext:
# - path: "/spec/ordinals/start"
# operator: replace
# value: 3
---
apiVersion: networking.karmada.io/v1alpha1
kind: MultiClusterService
metadata:
name: nginx
spec:
types:
- CrossCluster
providerClusters:
- name: member1
- name: member2
consumerClusters:
- name: member1
- name: member2
The endpointslice:
root@karmada [02:31:26 PM] [~/workspace/demo/mcs/mcs-serviceexport]
-> # karmadactl get endpointslice
NAME CLUSTER ADDRESSTYPE PORTS ENDPOINTS AGE ADOPTION
kubernetes member2 IPv4 6443 172.18.0.4 4d22h N
member1-nginx-h54rm member2 IPv4 80 10.10.0.92,10.10.0.93,10.10.0.94 7m45s Y
nginx-headless-hpddj member2 IPv4 80 10.12.0.38,10.12.0.39,10.12.0.40 7m45s Y
nginx-hgbfs member2 IPv4 80 10.12.0.38,10.12.0.39,10.12.0.40 7m45s Y
kubernetes member1 IPv4 6443 172.18.0.5 4d22h N
member2-nginx-hgbfs member1 IPv4 80 10.12.0.38,10.12.0.39,10.12.0.40 7m45s Y
nginx-h54rm member1 IPv4 80 10.10.0.92,10.10.0.93,10.10.0.94 7m45s Y
nginx-headless-2xx96 member1 IPv4 80 10.10.0.92,10.10.0.93,10.10.0.94 7m45s Y
kubernetes member3 IPv4 6443 172.18.0.3 4d22h N
kubernetes member4 IPv4 6443 172.18.0.7 3d19h N
I update to latest version,the same no generated endpointslice
root@karmada-01-b:~/karmada-teaching/sts# karmadactl get endpointslice --kubeconfig ~/kube-karmada
NAME CLUSTER ADDRESSTYPE PORTS ENDPOINTS AGE ADOPTION
kubernetes cluster1 IPv4 6443 192.168.229.182 47h N
nginx-headless-k9fzk cluster1 IPv4 80 10.2.1.141,10.2.0.131,10.2.3.54 12m Y
nginx-wh5pl cluster1 IPv4 80 10.2.1.141,10.2.0.131,10.2.3.54 12m Y
kubernetes cluster2 IPv4 6443 192.168.229.185 56d N
nginx-5dnr4 cluster2 IPv4 80 10.2.2.118,10.2.1.112,10.2.0.99 12m Y
nginx-headless-lhcgm cluster2 IPv4 80 10.2.2.118,10.2.1.112,10.2.0.99 12m Y
kubernetes cluster3 IPv4 6443 192.168.229.202 13d N
Can you show me the result of the following commands, with karmada-apiserver context?
kubectl get mcs -oyaml
kubectl get work -A
你用的是什么网络
root@karmada-01-b:~/karmada-teaching/sts# kubectl get mcs -oyaml --kubeconfig ~/kube-karmada
apiVersion: v1
items:
- apiVersion: networking.karmada.io/v1alpha1
kind: MultiClusterService
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"networking.karmada.io/v1alpha1","kind":"MultiClusterService","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"serviceConsumptionClusters":["cluster1","cluster2","cluster3"],"serviceProvisionClusters":["cluster1","cluster2","cluster3"],"types":["CrossCluster"]}}
creationTimestamp: "2024-02-03T05:40:00Z"
generation: 1
labels:
multiclusterservice.karmada.io/permanent-id: 6e9ac7c4-5477-46a6-b075-22b46e5aee70
name: nginx
namespace: default
resourceVersion: "8715"
uid: 6d78afa2-755f-45bb-aa1a-fb74547f923e
spec:
range: {}
serviceConsumptionClusters:
- cluster1
- cluster2
- cluster3
serviceProvisionClusters:
- cluster1
- cluster2
- cluster3
types:
- CrossCluster
kind: List
metadata:
resourceVersion: ""
root@karmada-01-b:~/karmada-teaching/sts# kubectl get work -A --kubeconfig ~/kube-karmada
NAMESPACE NAME WORKLOAD-KIND APPLIED AGE
karmada-es-cluster1 karmada-impersonator-7cbb6bd5c9 ClusterRole True 23h
karmada-es-cluster1 karmada-impersonator-84f8c8f8c6 ClusterRoleBinding True 23h
karmada-es-cluster1 nginx-64b7849b5 Service True 23m
karmada-es-cluster1 nginx-headless-5ffd8b4dbc Service True 23m
karmada-es-cluster2 karmada-impersonator-7cbb6bd5c9 ClusterRole True 23h
karmada-es-cluster2 karmada-impersonator-84f8c8f8c6 ClusterRoleBinding True 23h
karmada-es-cluster2 nginx-64b7849b5 Service True 23m
karmada-es-cluster2 nginx-headless-5ffd8b4dbc Service True 23m
karmada-es-cluster2 web-7754dc7556 StatefulSet True 23m
karmada-es-cluster3 karmada-impersonator-7cbb6bd5c9 ClusterRole True 23h
karmada-es-cluster3 karmada-impersonator-84f8c8f8c6 ClusterRoleBinding True 23h
karmada-es-cluster3 web-7754dc7556 StatefulSet True 7m34s
multiClusterService-nginx.yaml
kubectl apply -f multiClusterService-nginx.yaml --kubeconfig ~/kube-karmada
---
apiVersion: networking.karmada.io/v1alpha1
kind: MultiClusterService
metadata:
name: nginx
spec:
types:
- CrossCluster
serviceProvisionClusters:
- cluster1
- cluster2
- cluster3
serviceConsumptionClusters:
- cluster1
- cluster2
- cluster3
你用的是什么网络
I tested with kind, so the container network is kind-net(https://github.com/aojea/kindnet)
Could you assist by executing the following command?
kubectl explain mcs.spec --kubeconfig ~/kube-karmada
Also, are you using the latest version?
最新版的,cilium 用了cilium cluster mesh
root@karmada-01-b:~/karmada-teaching/disater-recovery# kubectl explain mcs.spec --kubeconfig ~/kube-karmada
E0204 20:57:03.029876 431679 memcache.go:287] couldn't get resource list for metrics.k8s.io/v1beta1: the server is currently unable to handle the request
E0204 20:57:03.374013 431679 memcache.go:287] couldn't get resource list for cluster.karmada.io/v1alpha1: the server is currently unable to handle the request
E0204 20:57:03.412788 431679 memcache.go:287] couldn't get resource list for custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request
E0204 20:57:03.418026 431679 memcache.go:287] couldn't get resource list for custom.metrics.k8s.io/v1beta2: the server is currently unable to handle the request
E0204 20:57:03.762126 431679 memcache.go:121] couldn't get resource list for metrics.k8s.io/v1beta1: the server is currently unable to handle the request
E0204 20:57:03.855161 431679 memcache.go:121] couldn't get resource list for cluster.karmada.io/v1alpha1: the server is currently unable to handle the request
E0204 20:57:04.016940 431679 memcache.go:121] couldn't get resource list for custom.metrics.k8s.io/v1beta2: the server is currently unable to handle the request
E0204 20:57:04.148608 431679 memcache.go:121] couldn't get resource list for custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request
E0204 20:57:04.168604 431679 memcache.go:121] couldn't get resource list for metrics.k8s.io/v1beta1: the server is currently unable to handle the request
E0204 20:57:04.175347 431679 memcache.go:121] couldn't get resource list for cluster.karmada.io/v1alpha1: the server is currently unable to handle the request
E0204 20:57:04.237105 431679 memcache.go:121] couldn't get resource list for custom.metrics.k8s.io/v1beta2: the server is currently unable to handle the request
E0204 20:57:04.391072 431679 memcache.go:121] couldn't get resource list for custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request
GROUP: networking.karmada.io
KIND: MultiClusterService
VERSION: v1alpha1
FIELD: spec <Object>
DESCRIPTION:
Spec is the desired state of the MultiClusterService.
FIELDS:
consumerClusters <[]Object>
ConsumerClusters specifies the clusters where the service will be exposed,
for clients. If leave it empty, the service will be exposed to all clusters.
ports <[]Object>
Ports is the list of ports that are exposed by this MultiClusterService. No
specified port will be filtered out during the service exposure and
discovery process. All ports in the referencing service will be exposed by
default.
providerClusters <[]Object>
ProviderClusters specifies the clusters which will provide the service
backend. If leave it empty, we will collect the backend endpoints from all
clusters and sync them to the ConsumerClusters.
range <Object>
Range specifies the ranges where the referencing service should be exposed.
Only valid and optional in case of Types contains CrossCluster. If not set
and Types contains CrossCluster, all clusters will be selected, that means
the referencing service will be exposed across all registered clusters.
Deprecated: in favor of ProviderClusters/ConsumerClusters.
serviceConsumptionClusters <[]string>
ServiceConsumptionClusters specifies the clusters where the service will be
exposed, for clients. If leave it empty, the service will be exposed to all
clusters. Deprecated: in favor of ProviderClusters/ConsumerClusters.
serviceProvisionClusters <[]string>
ServiceProvisionClusters specifies the clusters which will provision the
service backend. If leave it empty, we will collect the backend endpoints
from all clusters and sync them to the ServiceConsumptionClusters.
Deprecated: in favor of ProviderClusters/ConsumerClusters.
types <[]string> -required-
Types specifies how to expose the service referencing by this
MultiClusterService.
我的配置有点问题,我再试下
root@karmada-01-b:~/karmada-teaching/sts# kubectl get mcs --kubeconfig ~/kube-karmada nginx -o yaml
apiVersion: networking.karmada.io/v1alpha1
kind: MultiClusterService
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"networking.karmada.io/v1alpha1","kind":"MultiClusterService","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"consumerClusters":[{"name":"cluster1"},{"name":"cluster2"},{"name":"cluster3"}],"providerClusters":[{"name":"cluster1"},{"name":"cluster2"},{"name":"cluster3"}],"types":["CrossCluster"]}}
creationTimestamp: "2024-02-04T13:05:13Z"
generation: 1
labels:
multiclusterservice.karmada.io/permanent-id: 9866b439-993c-4793-b837-8f3216daf558
name: nginx
namespace: default
resourceVersion: "110597"
uid: 82a62ddc-3156-48cd-b220-12c658e6eeb6
spec:
consumerClusters:
- name: cluster1
- name: cluster2
- name: cluster3
providerClusters:
- name: cluster1
- name: cluster2
- name: cluster3
range: {}
types:
- CrossCluster```
改了还是不行
Can you show me the component log by running(xxx is determined by the specific environment):
kubectl logs -nkarmada-system karmada-controller-manager-xxx | grep "mcs_controller.go"
also, show me the output of command:
kubectl get work -A --kubeconfig ~/kube-karmada
明天发你
root@karmada-01-b:~/karmada-teaching/sts# kubectl logs -n karmada-system karmada-controller-manager-7b587bcbfb-xkpsd| grep "mcs_controller.go"
root@karmada-01-b:~/karmada-teaching/sts#
root@karmada-01-b:~/karmada-teaching/sts# kubectl get work -A --kubeconfig ~/kube-karmada
NAMESPACE NAME WORKLOAD-KIND APPLIED AGE
karmada-es-member1 karmada-impersonator-7cbb6bd5c9 ClusterRole True 8m12s
karmada-es-member1 karmada-impersonator-84f8c8f8c6 ClusterRoleBinding True 8m11s
karmada-es-member1 nginx-64b7849b5 Service True 3m17s
karmada-es-member1 nginx-headless-5ffd8b4dbc Service True 3m16s
karmada-es-member1 web-7754dc7556 StatefulSet True 3m16s
karmada-es-member2 karmada-impersonator-7cbb6bd5c9 ClusterRole True 7m52s
karmada-es-member2 karmada-impersonator-84f8c8f8c6 ClusterRoleBinding True 7m52s
karmada-es-member2 nginx-64b7849b5 Service True 3m16s
karmada-es-member2 nginx-headless-5ffd8b4dbc Service True 3m16s
karmada-es-member2 web-7754dc7556 StatefulSet True 3m15s
@jwcesign
sts-nginx.yaml
kubectl apply -f sts-nginx.yaml --kubeconfig ~/kube-karmada
cluster1
cluster2
multiClusterService-nginx.yaml
kubectl apply -f multiClusterService-nginx.yaml --kubeconfig ~/kube-karmada
cluster1
cluster2
the endpointslice is not generated for annothor cluster What happened:
What you expected to happen:
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Environment:
kubectl-karmada version
orkarmadactl version
):