Kubeflow(https://www.kubeflow.org/docs)支持Microk8s部署(目前仅支持1.15.9以下版本),Microk8s是一个集成化的容器管理平台,与Kubernetes完全兼容,主要面向工作站、边缘计算和IoT等领域建立容器计算平台。
- 在官方版Kubernetes部署,参考 https://www.kubeflow.org/docs/started/k8s/kfctl-k8s-istio/ 。
- KubeFlow进展研究(v0.7.1,2020年02月)
- Kubernetes集群的NVIDIA设备支持插件
- Kubernetes-管理和调度GPUs资源
拉取镜像
原始的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,包括两步:
- 设置 Microk8s
- 启用 Kubeflow
1. 安装和设置 Microk8s
- microk8s命令列表,https://microk8s.io/docs/commands
运行下面的命令来安装 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`
-
启用GPU参考:
- Microk8s管理参考:
Dashboard安装:
- 编辑服务访问方式,microk8s.kubectl edit svc/**dashboard -n kube-system,如果出现乱码sudo apt install vim,改为NodePort,nodePort = 30880
- 浏览器输入 https://服务器地址:30880即可。需要登录token按照下面方式获取。
- 创建账号和获取Token,https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md,注意在老版本将namespace改为kube-system。
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上无效,使用下面方法安装。
- https://ubuntu.com/tutorials/get-started-kubeflow#5-install-kubeflow-using-kfctl
- 在microk8s 1.17.2上,enable kubeflow命令有效,但是kubeflow目前不支持kubernetes 1.16及其以上版本。
访问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”
来源:oschina
链接:https://my.oschina.net/u/2306127/blog/3165669