安装简单的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. Linux性能优化实战学习笔记:第五十六讲

    一.上节回顾 上一节,我带你一起梳理了,性能问题分析的一般步骤.先带你简单回顾一下. 我们可以从系统资源瓶颈和应用程序瓶颈,这两个角度来分析性能问题的根源. 从系统资源瓶颈的角度来说,USE 法是最为 ...

  2. [LeetCode] 552. Student Attendance Record II 学生出勤记录之二

    Given a positive integer n, return the number of all possible attendance records with length n, whic ...

  3. SpringBoot-dubbo自定义负载均衡实现简单灰度

    本文介绍如何利用dubbo自定义负载实现简单灰度(用户纬度,部分用户访问一个服务,其余访问剩余服务). 其实在这之前,对dubbo了解的也不是很多,只是简单的使用过,跑了几个demo而已,但是得知接下 ...

  4. lombok 异常:Lombok needs a default constructor in the base class less... (Ctrl+F1) Inspe

    这是 Lombok 旧版本的一个bug,之前用的版本是 1.16.22,然后抛出了这个异常,只需要进行版本升级即可,我升级到了当前最新版,如下所示: <!-- https://mvnreposi ...

  5. tomcat 指定(自定义)JDK路径的两种方式

      1.情景展示 tomcat7使用jdk1.7:tomcat8使用jdk1.8.两个tomcat在一台机器下同时启动,你会发现这两个tomcat使用的是一个版本的jdk, 那就是你配置过的JAVA_ ...

  6. 苹果开发之App签名

    如果你的Apple ID账号(可使用邮箱来注册)为Apple developer类型的话,登录之后是看不到Certificates, Indentifiers & Profiles信息的 Ap ...

  7. js获取长度,根据编码获取长度

    dataLen:function(str){ var realLength = 0, len = str.length, charCode = -1; for(var i = 0; i < le ...

  8. PDF提取图片(错误纠正)

    有个任务需要抽取pdf中的图片,于是找了一个例子但是有错误,仅此记录下 错误1. AttributeError: 'Document' object has no attribute 'getObje ...

  9. Teradata 数据库介绍

    Teradata在整体上是按Shared Nothing 架构体系进行组织的,他的定位就是大型数据仓库系统,定位比较高,他的软硬件都是NCR自己的,其他的都不识别:所以一般的企业用不起,价格很贵.由于 ...

  10. python]用eval强制将字符串转换为字典变量时候出错:NameError: name 'null' is not defined[python]用eval函数 字符串转dict

    本博客已搬家至个人网站 在路上 - On the way 下面的 技术 分类. 你可以通过点击 更新帖子 [已解决]Python中,用eval强制将字符串转换为字典变量时候出错:NameError: ...