karmada-io / karmada

Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration
https://karmada.io
Apache License 2.0
4.39k stars 867 forks source link

karmada1.8 不会生成endpointslice #4548

Open 13567436138 opened 8 months ago

13567436138 commented 8 months ago

sts/cpp-ServiceExport-ServiceImport.yaml

kubectl apply -f cpp-ServiceExport-ServiceImport.yaml --kubeconfig ~/kube-karmada

# propagate ServiceExport CRD
apiVersion: policy.karmada.io/v1alpha1
kind: ClusterPropagationPolicy
metadata:
  name: serviceexport-policy
spec:
  resourceSelectors:
    - apiVersion: apiextensions.k8s.io/v1
      kind: CustomResourceDefinition
      name: serviceexports.multicluster.x-k8s.io
  placement:
    clusterAffinity:
      clusterNames:
        - cluster1
        - cluster2
---        
# propagate ServiceImport CRD
apiVersion: policy.karmada.io/v1alpha1
kind: ClusterPropagationPolicy
metadata:
  name: serviceimport-policy
spec:
  resourceSelectors:
    - apiVersion: apiextensions.k8s.io/v1
      kind: CustomResourceDefinition
      name: serviceimports.multicluster.x-k8s.io
  placement:
    clusterAffinity:
      clusterNames:
        - cluster1
        - cluster2

sts/se-server-cluster2.yaml

kubectl apply -f se-server-cluster2.yaml --kubeconfig ~/kube-karmada

apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceExport
metadata:
  name: nginx-ext
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: nginx-export-policy
spec:
  resourceSelectors:
    - apiVersion: multicluster.x-k8s.io/v1alpha1
      kind: ServiceExport
      name: nginx-ext
  placement:
    clusterAffinity:
      clusterNames:
        - cluster2
        - cluster1

sts/si-nginx-noip.yaml

kubectl apply -f si-nginx-noip.yaml --kubeconfig ~/kube-karmada

apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceImport
metadata:
  name: nginx-ext
spec:
  type: ClusterSetIP
  ips:
  - 10.70.235.41
  ports:
  - port: 80
    protocol: TCP
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: nginx-import-policy
spec:
  resourceSelectors:
    - apiVersion: multicluster.x-k8s.io/v1alpha1
      kind: ServiceImport
      name: nginx-ext
  placement:
    clusterAffinity:
      clusterNames:
        - cluster1
        - cluster2

sts-nginx.yaml

kubectl apply -f sts-nginx.yaml --kubeconfig ~/kube-karmada

apiVersion: v1
kind: Service
metadata:
  name: nginx-ext
  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-ext
spec:
  resourceSelectors:
    - apiVersion: v1
      kind: Service
      name: nginx-ext
  placement:
    clusterAffinity:
      clusterNames:
        - cluster1
        - cluster2 
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  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
spec:
  resourceSelectors:
    - apiVersion: v1
      kind: Service
      name: nginx
  placement:
    clusterAffinity:
      clusterNames:
        - cluster1
        - cluster2 
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  ordinals:
    start: 0
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "ceph-block"
      resources:
        requests:
          storage: 10Mi
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: nginx-deploy
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: StatefulSet
      name: web
  placement:
    clusterAffinity:
      clusterNames:
        - cluster1
        - cluster2
---
---
apiVersion: policy.karmada.io/v1alpha1
kind: OverridePolicy
metadata:
  name: nginx-member2
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: StatefulSet
      name: web
  targetCluster:
    clusterNames:
      - cluster2
  overriders:
    plaintext:
      - path: "/spec/ordinals/start"
        operator: replace
        value: 3

What happened:

What you expected to happen:

How to reproduce it (as minimally and precisely as possible):

Anything else we need to know?:

Environment:

13567436138 commented 8 months ago

root@karmada-02-a:~# kubectl get endpointslice NAME ADDRESSTYPE PORTS ENDPOINTS AGE kubernetes IPv4 6443 192.168.229.182 37d nginx-779dw IPv4 80 10.1.0.244,10.1.2.177,10.1.1.99 3m24s nginx-ext-jn4xm IPv4 80 10.1.0.244,10.1.2.177,10.1.1.99 3m24s

liangyuanpeng commented 8 months ago

root@karmada-02-a:~# kubectl get endpointslice NAME ADDRESSTYPE PORTS ENDPOINTS AGE kubernetes IPv4 6443 192.168.229.182 37d nginx-779dw IPv4 80 10.1.0.244,10.1.2.177,10.1.1.99 3m24s nginx-ext-jn4xm IPv4 80 10.1.0.244,10.1.2.177,10.1.1.99 3m24s

Seems like you are get the endpointslice for service of nginx-ext. @13567436138

13567436138 commented 8 months ago

you are right.My host and member k8s is 1.28.1,will this be a problem?

liangyuanpeng commented 8 months ago

I mean you are already get the endpointslice, it is nginx-ext-jn4xm IPv4 80 10.1.0.244,10.1.2.177,10.1.1.99 3m24s

liangyuanpeng commented 8 months ago

My host and member k8s is 1.28.1,will this be a problem?

I'm using v1.29 for my dev, it's working for me.

13567436138 commented 8 months ago

both cluster have nginx-ext,the endpointslice is for local cluster