1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fabedge-fabedge

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
get-started.md 19 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 08.03.2025 05:05 ca482b1

Начало работы

[toc]

Терминология

  • Облако-кластер (cloud cluster): стандартный k8s кластер, расположенный в облачной части, предоставляющий вычислительные возможности в облаке.

  • Крайний кластер (edge cluster): стандартный k8s кластер, расположенный на стороне края, предоставляющий вычислительные возможности на краю.

  • Узел-соединение (connector node): uks узел, расположенный в облачной части, отвечающий за коммуникацию между облачной и краевой частями. Поскольку узел соединения будет иметь значительную нагрузку, лучше не запускать другие программы на нём.

  • Крайний узел (edge node): uks узел, расположенный на стороне края, присоединяющийся к облако-кластеру с помощью фреймворка, такого как KubeEdge.

  • Хост-кластер (host cluster): выборочный облако-кластер, используемый для управления межкластерной коммуникацией. Первый установленный кластер FabEdge должен быть хост-кластером.

  • Член-кластер (member cluster): крайний кластер, зарегистрированный в хост-кластере, который сообщает информацию о сети хост-кластеру.

  • Сообщество (community): K8S CRD, определённый FabEdge, существует два типа:

    • Тип узла (node type): для определения коммуникации между узлами внутри одного кластера
    • Тип кластера (cluster type): для определения межкластерной коммуникации

Предварительные требования- Kubernetes (v1.22.5+)

  • Flannel (v0.14.0) или Calico (v3.16.5)
  • KubeEdge (>= v1.9.0) или SuperEdge (v0.8.0) или OpenYurt (>= v1.2.0)

Примечание 1: Для Flannel поддерживаются только режимы Vxlan. Поддерживает среду с двойным стеком.

Примечание 2: Для Calico поддерживаются только режимы IPIP. Поддерживает только среду IPv4.

Подготовка

  1. Убедитесь, что следующие порты разрешены сетевым экраном или группой безопасности.

    • ESP(50), UDP/500, UDP/4500
  2. Отключите firewalld, если он установлен на вашем компьютере.

  3. Соберите конфигурацию текущего кластера

    $ curl -s https://fabedge.github.io/helm-chart/scripts/get_cluster_info.sh | bash -
    Это может занять некоторое время. Пожалуйста, подождите.
    
    clusterDNS               : 169.254.25.10
    clusterDomain            : cluster.local
    cluster-cidr             : 10.233.64.0/18
    service-cluster-ip-range : 10.233.0.0/18

Развертывание FabEdge на хост-кластере

  1. Используйте Helm для добавления репозитория FabEdge:

    helm repo add fabedge https://fabedge.github.io/helm-chart
    ```1. Разверните FabEdge```shell

$ curl https://fabedge.github.io/helm-chart/scripts/quickstart.sh | bash -s --
--cluster-name beijing
--cluster-role host
--cluster-zone beijing
--cluster-region china
--connectors node1
--edges edge1,edge2
--edge-pod-cidr 10.233.0.0/16
--connector-public-addresses 10.22.46.47
--chart fabedge/fabedge

> Примечание:   
> **--connectors**: Названия узлов Kubernetes, в которых находятся коннекторы, эти узлы будут помечены как node-role.kubernetes.io/connector  
> **--edges**: Названия узлов края, эти узлы будут помечены как node-role.kubernetes.io/edge  
> **--edge-pod-cidr**: Диапазон IPv4 адресов для пакетов края, требуется при использовании Calico. Убедитесь, что значение не пересекается с CIDR кластера вашего кластера.  
> **--connector-public-addresses**: IP-адреса узлов Kubernetes, где расположены коннекторы.  
> *PS: Скрипт `quickstart.sh` имеет больше параметров; приведенный выше пример использует только необходимые параметры, выполните `quickstart.sh --help`, чтобы проверить все доступные параметры.*2. Проверьте развертывание

   ```shell
   $ kubectl get no
   NAME     STATUS   ROLES       AGE     VERSION
   edge1    Ready    edge        5h22m   v1.22.6-kubeedge-v1.12.2
   edge2    Ready    edge        5h21m   v1.22.6-kubeedge-v1.12.2
   master   Ready    master      5h29m   v1.22.5
   node1    Ready    connector   5h23m   v1.22.5
   
   $ kubectl get po -n kube-system
   NAME                                      READY   STATUS    RESTARTS   AGE
   calico-kube-controllers-8b5ff5d58-lqg66   1/1     Running   0          17h
   calico-node-7dkwj                         1/1     Running   0          16h
   calico-node-q95qp                         1/1     Running   0          16h
   coredns-86978d8c6f-qwv49                  1/1     Running   0          17h
   kube-apiserver-master                     1/1     Running   0          17h
   kube-controller-manager-master            1/1     Running   0          17h
   kube-proxy-ls9d7                          1/1     Running   0          17h
   kube-proxy-wj8j9                          1/1     Running   0          17h
   kube-scheduler-master                     1/1     Running   0          17h
   metrics-server-894c64767-f4bvr            2/2     Running   0          17h
   nginx-proxy-node1                         1/1     Running   0          17h
   
   $ kubectl get po -n fabedge
   NAME                                READY   STATUS    RESTARTS   AGE
   fabdns-7dd5ccf489-5dc29              1/1     Running   0          24h
   fabedge-agent-bvnvj                  2/2     Running   2         23h
   fabedge-agent-c9bsx                  2/2     Running   2         23h
   fabedge-cloud-agent-lgqkw            1/1     Running   3         24h
   fabedge-connector-54c78b5444-9dkt6   2/2     Running   0          24h
   fabedge-operator-767bc6c58b-rk7mr    1/1     Running   0          24h
   service-hub-7fd4659b89-h522c         1/1     Running   0          24h
  1. Создайте сообщество для краевых устройств, которые должны общаться друг с другом
$ cat > all-edges.yaml << EOF
apiVersion: fabedge.io/v1alpha1
kind: Community
metadata:
  name: beijing-edge-nodes  # имя сообщества
spec:
  members:
    - beijing.edge1    # формат: {имя кластера}.{имя узла}
    - beijing.edge2
EOF
```$ kubectl apply -f all-edges.yaml
```4. Обновите конфигурацию, зависящую от [инфраструктуры边缘计算框架](#конфигурация-зависящая-от-инфраструктуры-граничного-расчета), связанной с ней

5. Обновите конфигурацию, зависящую от [CNI](#конфигурация-зависящая-от-CNI)

## Развертывание FabEdge в членском кластере

Если у вас есть какой-либо членский кластер, зарегистрируйте его в хостовом кластере первым делом, а затем разверните FabEdge в нем. Перед этим лучше убедиться, что адреса сети хоста и контейнерной сети этих кластеров не пересекаются.

1. В **хостовом кластере**, создайте кластер с именем "shanghai". Получите токен для регистрации.  

    ```shell
    # Выполнить в хостовом кластере
    $ cat > shanghai.yaml << EOF
    apiVersion: fabedge.io/v1alpha1
    kind: Cluster
    metadata:
      name: shanghai # имя кластера
    EOF
    
    $ kubectl apply -f shanghai.yaml
    
    $ kubectl get cluster shanghai -o go-template --template='{{.spec.token}}' | awk 'END{print}'
    eyJ------omitted-----9u0
    ```

3. Используйте Helm для добавления репозитория fabedge:

    ```shell
    helm repo add fabedge https://fabedge.github.io/helm-chart
    ```

3. Разверните FabEdge в членском кластере```shell
curl https://fabedge.github.io/helm-chart/scripts/quickstart.sh | bash -s -- \
    --cluster-name shanghai \
    --cluster-role member \
    --cluster-zone shanghai \
    --cluster-region china \
    --connectors node1 \
    --edges edge1,edge2 \
    --edge-pod-cidr 10.233.0.0/16 \
    --connector-public-addresses 10.22.46.26 \
    --chart fabedge/fabedge \
    --service-hub-api-server https://10.22.46.47:30304 \
    --operator-api-server https://10.22.46.47:30303 \
    --init-token ey...Jh

Примечание:
--connectors: Имена узлов Kubernetes, где расположены соединители; эти узлы будут помечены как node-role.kubernetes.io/connector.
--edges: Имена узлов границы; эти узлы будут помечены как node-role.kubernetes.io/edge.
--edge-pod-cidr: Диапазон IPv4-адресов для пакета границы; если используется Calico, этот параметр обязателен. Убедитесь, что значение не пересекается с CIDR-диапазоном вашего кластера.
--connector-public-addresses: IP-адреса узлов Kubernetes, где расположены соединители в членском кластере.
--init-token: Токен при добавлении членского кластера в хостовый кластер.
--service-hub-api-server: Конечная точка сервис-хаба в хостовом кластере.
--operator-api-server: Конечная точка оператора API в хостовом кластере.4. Проверьте развертывание```shell $ kubectl get no NAME STATUS РОЛИ ВРЕМЯ ВЕРСИЯ edge1 Ready edge 5h22m v1.22.6-kubeedge-v1.12.2 edge2 Ready edge 5h21m v1.22.6-kubeedge-v1.12.2 master Ready master 5h29m v1.22.5 node1 Ready connector 5h23m v1.22.5

$ kubectl get po -n kube-system NAME READY STATUS RESTARTS ВРЕМЯ calico-kube-controllers-8b5ff5d58-lqg66 1/1 Running 0 17h calico-node-7dkwj 1/1 Running 0 16h calico-node-q95qp 1/1 Running 0 16h coredns-86978d8c6f-qwv49 1/1 Running 0 17h kube-apiserver-master 1/1 Running 0 17h kube-controller-manager-master 1/1 Running 0 17h kube-proxy-ls9d7 1/1 Running 0 17h kube-proxy-wj8j9 1/1 Running 0 17h kube-scheduler-master 1/1 Running 0 17h metrics-server-894c64767-f4bvr 2/2 Running 0 17h nginx-proxy-node1 1/1 Running 0 17h

$ kubectl get po -n fabedge NAME READY STATUS RESTARTS ВРЕМЯ fabdns-7b768d44b7-bg5h5 1/1 Running 0 9m19s fabedge-agent-m55h5 2/2 Running 0 8m18s fabedge-cloud-agent-hxjtb 1/1 Running 4 9m19s fabedge-connector-8c949c5bc-7225c 2/2 Running 0 8m18s fabedge-operator-dddd999f8-2p6zn 1/1 Running 0 9m19s service-hub-74d5fcc9c9-f5t8f 1/1 Running 0 9m19s


## Включение многоузловой связи

1. В **хостовом кластере**, создайте сообщество для всех кластеров, которые должны взаимодействовать друг с другом

	```shell
	$ cat > community.yaml << EOF
	apiVersion: fabedge.io/v1alpha1
	kind: Community
	metadata:
	  name: all-clusters
	spec:
	  members:
	    - shanghai.connector   # формат: имя_кластера.connector
	    - beijing.connector    # формат: имя_кластера.connector
	EOF
	
	$ kubectl apply -f community.yaml
	```## Включение многоузлового открытия служб
Измените конфигурационный маппинг coredns:

```shell
$ kubectl -n kube-system edit cm coredns
# добавьте эту конфигурацию
global {
   forward . 10.109.72.43                 # cluster-ip сервиса fab-dns
}

.:53 {
    ...
}
  1. Восстановите coredns для применения конфигурации

Конфигурация, зависящая отedge computing framework

KubeEdge

cloudcore

  1. Включите dynamicController в cloudcore:

    dynamicController:
        enable: true

    Эта конфигурационная единица находится в файле конфигурации cloudcore cloudcore.yaml, пожалуйста, найдите этот файл самостоятельно в зависимости от вашей среды.

  2. Убедитесь, что cloudcore имеет права доступа к ресурсам endpointslices (только если cloudcore запущен в кластере):

    kubectl edit clusterrole cloudcore
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      labels:
        app.kubernetes.io/managed-by: Helm
        k8s-app: kubeedge
        kubeedge: cloudcore
      name: cloudcore
    rules:
    - apiGroups:
      - discovery.k8s.io
      resources:
      - endpointslices
      verbs:
      - get
      - list
      - watch
  3. Перезапустите cloudcore.

edgecore

  1. Обновите edgecore на всех граничных узлах (kubeedge < v.1.12.0)

    $ vi /etc/kubeedge/config/edgecore.yaml
    edged:
        enable: true
        ...
        networkPluginName: cni
        networkPluginMTU: 1500   
        clusterDNS: 169.254.25.10        
        clusterDomain: "cluster.local"    # clusterDomain из вывода команды get_cluster_info
    metaManager:
        metaServer:
          enable: true

    или (kubeedge >= v.1.12.2) yaml $ vi /etc/kubeedge/config/edgecore.yaml edged: enable: true ... network_plugin_name: cni network_plugin_mtu: 1500 tailored_kubelet_config: cluster_dns: ["169.254.25.10"] cluster_domain: "cluster.local" # clusterDomain из вывода команды get_cluster_info meta_manager: meta_server: enable: true 3. Перезапустите edgecore на всех граничных узлах

    $ systemctl restart edgecore 

Конфигурация, зависящая от CNI

Для Calico

С версии v0.7.0, fabedge может управлять пулингами адресов Calico с CIDRs из других кластеров. Эта функция активируется при использовании скрипта quickstart.sh для установки fabedge. Если вы предпочитаете настроить пулинги адресов самостоятельно, предоставьте --auto-keep-ippools false при установке fabedge. Если вы выбрали, чтобы fabedge настраивал пулинги адресов, следующий контент можно пропустить. Независимо от роли кластера, добавьте все сегменты сети Pods и Services всех других кластеров в кластер с Calico, что предотвращает Calico от выполнения перевода адреса источника.

Пример с кластерами: хост (Calico) + member1 (Calico) + member2 (Flannel)

  • На кластере хоста (Calico) добавьте адреса кластера member (Calico) и кластера member (Flannel)

  • На кластере member1 (Calico) добавьте адреса кластера хоста (Calico) и кластера member (Flannel)

  • На кластере member2 (Flannel) конфигурация не требуется.

    $ cat > cluster-cidr-pool.yaml << EOF
    apiVersion: projectcalico.org/v3
    kind: IPPool
    metadata:
      name: cluster-beijing-cluster-cidr
    spec:
      blockSize: 26
      cidr: 10.233.64.0/18
      natOutgoing: false
      disabled: true
      ipipMode: Always
    EOF
    
    $ calicoctl.sh create -f cluster-cidr-pool.yaml
    
    $ cat > service-cluster-ip-range-pool.yaml << EOF
    apiVersion: projectcalico.org/v3
    kind: IPPool
    metadata:
      name: cluster-beijing-service-cluster-ip-range
    spec:
      blockSize: 26
      cidr: 10.233.0.0/18
      natOutgoing: false
      disabled: true
      ipipMode: Always
    EOF
    
    $ calicoctl.sh create -f service-cluster-ip-range-pool.yaml
    ```> **cidr** должен быть одним из следующих значений:
  • edge-pod-cidr текущего кластера
  • параметр cluster-cidr другого кластера
  • диапазон service-cluster-ip-range другого кластера

Дополнительные документы

  • Этот документ представляет, как установить FabEdge через скрипт, который поможет вам быстро попробовать FabEdge, но мы рекомендуем вам прочитать Ручная установка, которая может лучше подходить для среды производства.

  • FabEdge также предоставляет другие возможности, прочтите Часто задаваемые вопросы, чтобы узнать больше.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fabedge-fabedge.git
git@api.gitlife.ru:oschina-mirror/fabedge-fabedge.git
oschina-mirror
fabedge-fabedge
fabedge-fabedge
main