安装简单的k8s大约有三种思路:minikube,microk8s,kubeadm。minikube 虽然是官方出品,但主要还是基于虚拟机做的设计。在 Linux 生产环境下,microk8s 可能是一个更合适的选择,它的主要组件是基于二进制包启动。

microk8s 基于 snap 进行安装,ubuntu 16.04 及之后的版本都已经预装了 snap,如果是其他发行版的 Linux 需要先安装 snap。

一,SNAP安装

Snap是Canonical推出的一种新的软件打包格式,彻底解决linux依赖性的问题,Snap 软件包拥有更加稳定和安全的特性。

官网URL:https://docs.snapcraft.io/installing-snap-on-centos

# 安装EPEL

sudo yum install epel-release

# 安装snapd

sudo yum install snapd

# 添加snap,启动通信socket

sudo systemctl enable --now snapd.socket

# 创建软链

sudo ln -s /var/lib/snapd/snap /snap

 

二,Snap常用命令

# 列出已经安装的snap包

sudo snap list

# 搜索要安装的snap包

sudo snap find <text to search>

# 搜索要安装的snap包

sudo snap install <snap name>

# 删除一个snap包

sudo snap remove <snap name>

 

三,MicroK8s安装

通过 microk8s 可以非常快速的搭建起一个 Kubernetes 单机环境,安装极其非常方便,通过 snap 命令一键安装,可用测试,快速原型及CI/CD。

官方URL:https://microk8s.io/

1,单独安装microk8s

# 安装1.14稳定版microk8s

sudo snap install microk8s --classic --channel=1.14/stable

# 启用microk8s的DNS,存储和面板功能

sudo microk8s.enable dns dashboard storage

# 启动microk8s

sudo microk8s.start

# 查看microk8s状态

sudo microk8s.status

# 停止microk8s服务

sudo smicrok8s.stop

# 查看集群信息

sudo microk8s.kubectl cluster-info

# 查看集群节点

sudo microk8s.kubectl get nodes

# 命令别名

sudo snap alias microk8s.kubectl kubectl

2,脚本安装microk8s

由于本次安装microk8s主要是为了和kubeflow进行集成使用,所以使用更为方便的脚本安装。

Kubeflow推荐的脚本:https://github.com/canonical-labs/kubernetes-tools

安装脚本:

sudo kubernetes-tools/setup-microk8s.sh

安装过程如下图示:

***注意,由于此脚本安装dashborad时,使用了token,登陆时会增加操作步骤。为更方便测试,需要对脚本内容进行裁剪,禁用microm8s的dashboard功能(脚本里去除dashaboard或是microk8s命令禁用)。

dashboard的deployment及service使用了我自己提供的如下方案。

apiVersion: v1

kind: ServiceAccount

metadata:

labels:

k8s-app: kubernetes-dashboard

name: kubernetes-dashboard

namespace: kube-system

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

name: kubernetes-dashboard

roleRef:

apiGroup: rbac.authorization.k8s.io

kind: ClusterRole

name: cluster-admin

subjects:

- kind: ServiceAccount

name: kubernetes-dashboard

namespace: kube-system

---

kind: Deployment

apiVersion: apps/v1beta2

metadata:

labels:

k8s-app: kubernetes-dashboard

name: kubernetes-dashboard

namespace: kube-system

spec:

replicas: 1

revisionHistoryLimit: 3

selector:

matchLabels:

k8s-app: kubernetes-dashboard

template:

metadata:

labels:

k8s-app: kubernetes-dashboard

spec:

containers:

- name: kubernetes-dashboard

image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

ports:

- containerPort: 9090

protocol: TCP

livenessProbe:

httpGet:

path: /

port: 9090

initialDelaySeconds: 25

timeoutSeconds: 30

serviceAccountName: kubernetes-dashboard

---

kind: Service

apiVersion: v1

metadata:

labels:

k8s-app: kubernetes-dashboard

name: kubernetes-dashboard

namespace: kube-system

spec:

type: NodePort

ports:

- port: 80

targetPort: 9090

nodePort: 32766

selector:

k8s-app: kubernetes-dashboard

 

四,Kubeflow安装

Kubeflow是目前基于Kubernetes的主流机器学习解决方案,它抽象了和机器学习相关的PS-Worker模型,实现了一套pipeline的工作流,支持超参数训练和Jupyter notebooks集成等能力。

官网URL:https://www.kubeflow.org/

1,脚本安装kubeflow

本次安装参考url: https://www.kubeflow.org/docs/started/getting-started-multipass/

Kubeflow推荐的脚本:https://github.com/canonical-labs/kubeflow-tools

安装脚本:

sudo kubeflow-tools/install-kubeflow.sh

安装过程如下所示

2,镜像获取

上图中,有些kubeflow的pod已开始running,但有些pod一直处于ImagePullBackOff状态,这是因为这批镜像都是放在gcr.io域名仓库中,需要特别上网才能访问。

在这种情况下,根据网上的资料,我们以dockerhub为中继,将需要的docker镜像辗转拉取,直至所有镜像成功启动。

3,更新jupyter-web-app镜像

当一切就绪之,如果我们访问kubeflow的notebook服务时,发现还是无法正常使用jupyterhub功能。分析浏览器错误,才发现是一个网页内的jquery库,引用的是googleapis的地址,于是,还需要重新将涉及的layout.html更改之后生成新的镜像。

Dockerfile内容:

FROM gcr.io/kubeflow-images-public/jupyter-web-app:v0.5.0

COPY layout.html /app/kubeflow_jupyter/default/templates/

COPY layout.html /app/kubeflow_jupyter/rok/templates/

Layout.html更新后的内容:

<!DOCTYPE html>

<html>

<head>

<!-- Required meta tags -->

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<!-- Material Design Lite -->

<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">

<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.blue-pink.min.css">

<script src="https://code.getmdl.io/1.3.0/material.min.js"></script>

<!-- UI Specific -->

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css">

<link rel="shortcut icon" href="{{ prefix + url_for('static', filename='kubeflow.png') }}">

<link rel="stylesheet" href="{{ prefix + url_for('static', filename='css/main.css') }}">

<!-- Dialogs -->

<link rel="stylesheet" href="{{ prefix + url_for('static', filename='css/dialog.css') }}"">

<script src="{{ prefix + url_for('static', filename='js/dialog.js') }}"></script>

{% if title %}

<title>Kubeflow Jupyter - {{ title }}</title>

{% else %}

<title>Kubeflow Jupyter</title>

{% endif %}

{% block javascript %}

<script type="text/javascript">

var prefix = "{{ prefix }}";

</script>

{% endblock %}

</head>

<body>

<div class='parent errors'>

<div class="spacer"></div>

<div id="error-msgs"></div>

<div class="spacer"></div>

</div>

<div class="page-content">

{% block content %}{% endblock %}

</div>

</body>

</html>

最终,即可正常使用这一功能了。

MicroK8s及KubeFlow安装文档的更多相关文章

  1. ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档

    ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档 2015-10-21 12:51 525人阅读 评论(0) 收藏 举报  分类: Oracle RA ...

  2. Oracle 11g 单实例安装文档

    这里介绍在Red Hat Enterprise Linux Server release 5.7 (Tikanga)下安装ORACLE 11.2.0.1.0的过程,本文仅仅是为了写这样安装指导文档而整 ...

  3. linkedin开源的kafka-monitor安装文档

    linkedin开源的kafka-monitor安装文档 linkedin 开源的kafka-monitor的安装使用可以参考官方的readme:流程介绍的已经比较清楚,但是还是有一些地方需要修正.让 ...

  4. _00024 尼娜抹微笑伊拉克_云计算ClouderaManager以及CHD5.1.0群集部署安装文档V1.0

    笔者博文:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

  5. oracle database 12c R1 安装文档

    INSTALLORACLE DATABASE 12C 完整的安装文档下载地址: http://download.csdn.net/detail/royjj/5665869 OS:ORALCE LINU ...

  6. HAProxy安装文档

    HAProxy安装文档 [toc][TOC] 一.环境说明 系统环境:CentOS Linux release 7.2.1511 (Core) 系统内核:3.10.0-327.el7.x86_64 软 ...

  7. Oracle 12c RAC 静默安装文档

    参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs. ...

  8. Oracle 12c RAC 安装文档

    参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs. ...

  9. Azkaban使用安装文档

    Azkaban使用安装文档 Azkaban简介 Azkaban的是什么 Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程.Az ...

随机推荐

  1. appium--解决每次安装appium setting和Unlock

    前戏 每次启动appium进行自动化的时候,都会提示我们需要安装appium setting和Unlock,而且还都要手动确认 那这两个文件是做什么的呢? Appium settings:用于设置网络 ...

  2. java ++和--

    public class Sample { public static void main(String[] args) { , num2 = ; , num4 = ; System.out.prin ...

  3. C语言I作业12—学期总结

    一.我学到的内容 二我的收获 作业 收获 C语言博客作业1 刚开始初步了解C语言方面的知识 学会Markdown基本语法 C语言博客作业2 学会了应该如何提问 PTA系统常见问题解答 学会了MinGW ...

  4. 热情组——项目冲刺 Day6

    项目相关 作业相关 具体描述 班级 班级链接 作业要求 链接地址 团队名称 热情组 作业目标 实现软件制作,以及在福大的传播 Github链接 链接地址 SCRUM部分: 成员昵称 昨日目标 开始时间 ...

  5. oracle--DG查询同步

    查询归档历史: SELECT FIRST_TIME,FIRST_CHANGE#,NEXT_CHANGE#, SEQUENCE# FROM V$LOG_HISTORY; 检查归档文件路径和创建信息 SE ...

  6. 微信企业号消息接口PHP SDK

    微信企业号消息接口PHP SDK及Demo <?php /* 方倍工作室 http://www.fangbei.org/ CopyRight 2015 All Rights Reserved * ...

  7. wifi串口服务器

    下面与大家分享上海卓岚无线wifi串口服务器ZLAN7104创建虚拟串口的设置使用心得 一.7104网线连接计算机,用ZLVircom即可搜索并配置 其中,串口设置需要匹配实际所接的串口设备,配置为相 ...

  8. 排列组合(包括n中随机抽取m个)

    有些情况我们需要获取一个数组中的所有排列组合情况,或者获取一部分数据进行随机组合,这个在python中有一个模块可以实现.具体情况如下 :::::::::::::::::::::::::::::::: ...

  9. C# 直接清空缓存方法

    注意要使用 HttpContext.Current.Cache.Remove(cacheKey); 不能使用 HttpRuntime.Cache[cacheKey]=null;

  10. 「福利」Java Swing 编写的可视化算法工程,包含树、图和排序

    之前在整理<学习排序算法,结合这个方法太容易理解了>这篇文章时,发现了一个用 Java Swing 编写的可视化算法工程,真心不错!包含了常用数据结构和算法的动态演示,先来张图感受下: 可 ...