KubeFlow-在Microk8s部署与应用

ε祈祈猫儿з 提交于 2020-02-26 02:04:55

Kubeflow(https://www.kubeflow.org/docs)支持Microk8s部署(目前仅支持1.15.9以下版本),Microk8s是一个集成化的容器管理平台,与Kubernetes完全兼容,主要面向工作站、边缘计算和IoT等领域建立容器计算平台。

拉取镜像

原始的kubernetes镜像文件在gcr上,不能直接下载。我给镜像到了阿里云的杭州机房的容器仓库里,拉取还是比较快的。

echo ""
echo "=========================================================="
echo "Pull Kubernetes v1.15.9 Images from aliyuncs.com ......"
echo "=========================================================="
echo ""

MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/openthings

## 拉取镜像
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-apiserver:v1.15.9
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-controller-manager:v1.15.9
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-scheduler:v1.15.9
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-proxy:v1.15.9
docker pull ${MY_REGISTRY}/k8s-gcr-io-etcd:3.3.10
docker pull ${MY_REGISTRY}/k8s-gcr-io-pause:3.1
docker pull ${MY_REGISTRY}/k8s-gcr-io-coredns:1.3.1

## 添加Tag
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-apiserver:v1.15.9 k8s.gcr.io/kube-apiserver:v1.15.9
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-scheduler:v1.15.9 k8s.gcr.io/kube-scheduler:v1.15.9
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-controller-manager:v1.15.9 k8s.gcr.io/kube-controller-manager:v1.15.9
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-proxy:v1.15.9 k8s.gcr.io/kube-proxy:v1.15.9
docker tag ${MY_REGISTRY}/k8s-gcr-io-etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag ${MY_REGISTRY}/k8s-gcr-io-pause:3.1 k8s.gcr.io/pause:3.1
docker tag ${MY_REGISTRY}/k8s-gcr-io-coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

echo ""
echo "=========================================================="
echo "Pull Kubernetes v1.15.9 Images FINISHED."
echo "into registry.cn-hangzhou.aliyuncs.com/openthings, "
echo "           by openthings@https://my.oschina.net/u/2306127."
echo "=========================================================="

echo ""

因为MicroK8s的镜像管理与Docker不同,需要将相应的镜像save为*.tar,然后使用microk8s再import进去,才能在microk8s里使用。

  • 注意:
    • microk8s以前版本(<1.14)使用microk8s.docker操作容器镜像,现在已经改为microk8s.ctr了

如下:

#输出
docker save k8s.gcr.io/kube-apiserver:v1.15.9 -o kube-apiserver-v1.15.9.tar
docker save k8s.gcr.io/kube-scheduler:v1.15.9 -o kube-scheduler-v1.15.9.tar
docker save k8s.gcr.io/kube-controller-manager:v1.15.9 -o kube-controller-manager-v1.15.9.tar
docker save k8s.gcr.io/kube-proxy:v1.15.9 -o kube-proxy-v1.15.9.tar
docker save k8s.gcr.io/etcd:3.3.10 -o etcd-3.3.10.tar
docker save k8s.gcr.io/pause:3.1 -o pause-3.1.tar
docker save k8s.gcr.io/coredns:1.3.1 -o coredns-1.3.1.tar

#输入
microk8s.ctr image import kube-apiserver-v1.15.9.tar
microk8s.ctr image import kube-scheduler-v1.15.9.tar
microk8s.ctr image import kube-controller-manager-v1.15.9.tar
microk8s.ctr image import kube-proxy-v1.15.9.tar
microk8s.ctr image import etcd-3.3.10.tar
microk8s.ctr image import pause-3.1.tar
microk8s.ctr image import coredns-1.3.1.tar

下载hub.docker.com的镜像,使用:

microk8s.ctr image pull index.docker.io/mydocker/dockerid:version

使用其它的registry,参考:

保存为shell脚本,然后执行。

安装

如果已经有 Ubuntu 或者其它 Linux能支持 snaps,可以容易地安装 Kubernetes。通过Microk8s可以快速安装Kubeflow,参见下面。

如果没有 Linux system,可以 Create a VM with Multipass 然后在执行下面的安装指令。将得到一个 Ubuntu machine,可以用于安装 Kubernetes 和Kubeflow。

安装Kubeflow在Microk8s,包括两步:

  1. 设置 Microk8s
  2. 启用 Kubeflow

1. 安装和设置 Microk8s

运行下面的命令来安装 MicroK8s:

snap install microk8s --classic
microk8s.status --wait-ready

# Enable common services:

microk8s.enable dns dashboard storage
# If you have a GPU, run: `microk8s.enable gpu`

Dashboard安装:

microk8s.kubectl -n kube-system describe secret $(microk8s.kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

2. 启用Kubeflow

运行下面的命令来启用 Kubeflow:

microk8s.enable kubeflow

将会打印出  Ambassador 和 Jupyter notebook servers的端口号。

不过,我使用上面方法在microk8s 1.15.9上无效,使用下面方法安装。

访问Kubeflow

如果安装Microk8s 在 local host, 可以使用 localhost 作为 IP address在浏览器访问。

如果如果使用 Multipass,可以获得IP address,使用: multipass list 或者multipass info kubeflow

浏览器访问地址为 - http://” Your kubeflow VM IP”:“Ambassador PORT” - http://localhost:" Ambassador PORT”

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!