k8s 联邦资源类型实例


这里有3个重要字段:

Templates: 所以集群都按这个配置

Placement: 指定哪些集群需部署该资源

Overrides: 覆盖template 中的配置,针对特定集群做不同的设置

参考: https://github.com/kubernetes-sigs/kubefed/tree/master/example/sample1

federateddeployment.yaml

apiVersion: types.kubefed.io/v1beta1
kind: FederatedDeployment
metadata:
  name: test-deployment
  namespace: test-namespace
spec:
  template:
    metadata:
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: nginx:1.17.0-alpine 
            name: nginx
  placement:
    clusters:
    - name: cluster1
    - name: cluster2
  overrides:
  - clusterName: cluster2
    clusterOverrides:
    - path: "/spec/replicas"
      value: 5
    - path: "/spec/template/spec/containers/0/image"
      value: "nginx:1.17.0-alpine"
    - path: "/metadata/annotations"
      op: "add"
      value:
        foo: bar
    - path: "/metadata/annotations/foo"
      op: "remove"

federatednamespace.yaml

apiVersion: types.kubefed.io/v1beta1
kind: FederatedNamespace
metadata:
  name: test-namespace
  namespace: test-namespace
spec:
  placement:
    clusters:
    - name: cluster2
    - name: cluster1

federatedservice.yaml

apiVersion: types.kubefed.io/v1beta1
kind: FederatedService
metadata:
  name: test-service
  namespace: test-namespace
spec:
  template:
    spec:
      selector:
        app: nginx
      type: NodePort
      ports:
        - name: http
          port: 80
  placement:
    clusters:
    - name: cluster2
    - name: cluster1

federatedingress.yaml

apiVersion: types.kubefed.io/v1beta1
kind: FederatedIngress
metadata:
  name: test-ingress
  namespace: test-namespace
spec:
  template:
    spec:
      rules:
      - host: ingress.example.com
        http:
          paths:
          - backend:
              serviceName: test-service
              servicePort: 80
  placement:
    clusters:
    - name: cluster2
    - name: cluster1

federatedconfigmap.yaml

apiVersion: types.kubefed.io/v1beta1
kind: FederatedConfigMap
metadata:
  name: test-configmap
  namespace: test-namespace
spec:
  template:
    data:
      A: ala ma kota
  placement:
    clusters:
    - name: cluster2
    - name: cluster1
  overrides:
  - clusterName: cluster2
    clusterOverrides:
    - path: /data
      value:
        foo: bar

federatedsecret.yaml

apiVersion: types.kubefed.io/v1beta1
kind: FederatedSecret
metadata:
  name: test-secret
  namespace: test-namespace
spec:
  template:
    data:
      A: YWxhIG1hIGtvdGE=
    type: Opaque
  placement:
    clusters:
    - name: cluster2
    - name: cluster1
  overrides:
  - clusterName: cluster2
    clusterOverrides:
    - path: /data
      value:
        A: null

federatedendpoints.yaml (不是默认资源须添加)

apiVersion: types.kubefed.io/v1beta1 
kind: FederatedEndpoints 
metadata:
  name: test-endpoints
  namespace: test-namespace
spec:
  template:
    subsets:
    - addresses:
      - ip: 192.168.1.44
    ports:
    - port: 46379
      protocol: TCP
  placement:
    clusters:
    - name: cluster1
    - name: cluster2
---
apiVersion: types.kubefed.io/v1beta1 
kind: FederatedService
metadata:
  labels:
    app: test-endpoints
  name: test-endpoints
  namespace: test-namespace 
spec:
  template:
    spec:
      ports:
      - port: 6379
        targetPort: 46379
        protocol: TCP
      sessionAffinity: ClientIP
      sessionAffinityConfig:
        clientIP:
          timeoutSeconds: 10800
      type: ClusterIP
  placement:
    clusters:
    - name: cluster1
    - name: cluster2

federatedjob.yaml

apiVersion: types.kubefed.io/v1beta1
kind: FederatedJob
metadata:
  name: test-job
  namespace: test-namespace
spec:
  template:
    spec:
      parallelism: 1
      selector:
        matchLabels:
          app: busybox
      manualSelector: true
      template:
        metadata:
          labels:
            app: busybox
        spec:
          terminationGracePeriodSeconds: 0
          restartPolicy: Never
          containers:
            - name: busybox
              image: busybox
              command: ["/bin/sh", "-c", "trap : TERM INT; (while true; do sleep 1000; done) & wait"]
  placement:
    clusters:
    - name: cluster2
    - name: cluster1
  overrides:
  - clusterName: cluster2
    clusterOverrides:
    - path: /spec/parallelism
      value: 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值