安装简单的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. 【php】day01

    一.PHPCORE基础 1.什么是PHP:[Hypertext Preprocessor]            WEB程序开发语言,运行在服务器端                         的 ...

  2. Npcap环境配置(Winpcap后继者) pcap的一种

    Npcap是基于Winpcap和Libpcap的,Winpcap已多年无人维护,其官网也推荐Windows XP之后的用户转移到Npcap上.Npcap基于WINPCAP,Winpcap基于libpc ...

  3. DVWA Command Injection 通关教程

    Command Injection 介绍 命令注入(Command Injection),对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者bash命令)的一种注入攻 ...

  4. Shell脚本是什么、它是必需的吗?

    一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务.

  5. Debian/Ubuntu下安装Apache的Mod_Rewrite模块的步骤

    启用 Mod_rewrite 模块:sudo a2enmod rewrite 另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/a ...

  6. qps.sh

    mysql -p'' -Bse'show global status like "com_%";' > qps.new while true do sleep 0.5 mv ...

  7. Flink及Storm、Spark主流流框架比较

    转自:http://www.sohu.com/a/142553677_804130 引言 随着大数据时代的来临,大数据产品层出不穷.我们最近也对一款业内非常火的大数据产品 - Apache Flink ...

  8. commitizen规范代码提交

    转载链接:https://www.jianshu.com/p/bd712e42f2e9 参考链接:https://segmentfault.com/a/1190000009048911 平时提交的变动 ...

  9. ROS向节点传递参数

    ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多. 1. rosrun + 参数服务器传递 ros::init(argc, argv, &quo ...

  10. 【FPGA】Verilog实现交通信号灯

    大二数字电路的课程设计中,有一份日常作业使用Xilinx FPGA实现简易交通信号灯,但很可惜当时时间有限,没能最终完成.正好在这一学期选修SOPC设计课程,同样采用了Xilinx FPGA,故打算重 ...