github.com/midokura/kubeedge@v1.2.0-mido.0/build/cloud/README_zh.md (about)

     1  ## 部署 cloud 端到 k8s 集群
     2  
     3  此方式将部署 cloud 端到 k8s 集群,所以需要登录到 k8s 的 master 节点上(或者其他可以用 `kubectl` 操作集群的机器)。
     4  
     5  存放在 `github.com/kubeedge/kubeedge/build/cloud` 里的各个编排文件和脚本会被用到。所以需要先将这些文件放到可以用 kubectl 操作的地方。
     6  
     7  首先, 确保 k8s 集群可以拉到 edge controller 镜像。如果没有, 可以构建一个,然后推到集群能拉到的 registry 上。
     8  
     9  ```bash
    10  cd $GOPATH/src/github.com/kubeedge/kubeedge
    11  make cloudimage
    12  ```
    13  
    14  然后,需要生成 tls 证书。这步成功的话,会生成 `06-secret.yaml`。
    15  
    16  ```bash
    17  cd build/cloud
    18  ../tools/certgen.sh buildSecret | tee ./06-secret.yaml
    19  ```
    20  
    21  接着,按照编排文件的文件名顺序创建各个 k8s 资源。在创建之前,应该检查每个编排文件内容,以确保符合特定的集群环境。
    22  
    23  ```bash
    24  for resource in $(ls *.yaml); do kubectl create -f $resource; done
    25  ```
    26  
    27  最后,基于`08-service.yaml.example`,创建一个适用于你集群环境的 service,
    28  将 cloud hub 暴露到集群外,让 edge core 能够连到。
    29  
    30  ---
    31  > 以下仅针对网络环境不能正常下载相应镜像的说明:
    32  
    33  在可能有网络问题的情况下,在执行07-deployment.yaml的时候
    34  deployment中对应的init container会先去
    35  ```
    36  apk --no-cache add coreutils && cat | tee /etc/kubeedge/cloud/kubeconfig.yaml
    37  ```
    38  这一步可能会因为网络的原因不能成功执行,报错为
    39  ```
    40  ERROR: unsatisfiable constraints:
    41    coreutils (missing):
    42      required by: world[coreutils]
    43  The command '/bin/sh -c apk --no-cache add coreutils' returned a non-zero code: 1
    44  ```
    45  
    46  解决办法为在有网络环境的先制作一个init container image
    47  Dockerfile
    48  ```
    49  FROM alpine:3.9
    50  RUN apk --no-cache add coreutils
    51  ```
    52  再替换老的init container的image,以及删除掉`apk --no-cache add coreutils &&`即可