Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
7c9c244d
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7c9c244d
编写于
12月 18, 2017
作者:
T
typhoonzero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update doc index
上级
23215557
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
0 addition
and
80 deletion
+0
-80
doc/howto/index_cn.rst
doc/howto/index_cn.rst
+0
-3
doc/howto/index_en.rst
doc/howto/index_en.rst
+0
-2
doc/howto/usage/k8s/k8s_basis_cn.md
doc/howto/usage/k8s/k8s_basis_cn.md
+0
-75
未找到文件。
doc/howto/index_cn.rst
浏览文件 @
7c9c244d
...
...
@@ -9,9 +9,6 @@
usage/cmd_parameter/index_cn.rst
usage/cluster/cluster_train_cn.md
usage/k8s/k8s_basis_cn.md
usage/k8s/k8s_cn.md
usage/k8s/k8s_distributed_cn.md
开发标准
--------
...
...
doc/howto/index_en.rst
浏览文件 @
7c9c244d
...
...
@@ -9,8 +9,6 @@ Usage
usage/cmd_parameter/index_en.rst
usage/cluster/cluster_train_en.md
usage/k8s/k8s_en.md
usage/k8s/k8s_aws_en.md
Development
------------
...
...
doc/howto/usage/k8s/k8s_basis_cn.md
已删除
100644 → 0
浏览文件 @
23215557
# Kubernetes 简介
[
*Kubernetes*
](
http://kubernetes.io/
)
是Google开源的容器集群管理系统,其提供应用部署、维护、扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用。Kubernetes可以在物理机或虚拟机上运行,且支持部署到
[
AWS
](
http://kubernetes.io/docs/getting-started-guides/aws
)
,
[
Azure
](
http://kubernetes.io/docs/getting-started-guides/azure/
)
,
[
GCE
](
http://kubernetes.io/docs/getting-started-guides/gce
)
等多种公有云环境。介绍分布式训练之前,需要对
[
Kubernetes
](
http://kubernetes.io/
)
有一个基本的认识,下面先简要介绍一下本文用到的几个Kubernetes概念。
-
[
*Node*
](
http://kubernetes.io/docs/admin/node/
)
表示一个Kubernetes集群中的一个工作节点,这个节点可以是物理机或者虚拟机,Kubernetes集群就是由node节点与master节点组成的。
-
[
*Pod*
](
http://kubernetes.io/docs/user-guide/pods/
)
是一组(一个或多个)容器,pod是Kubernetes的最小调度单元,一个pod中的所有容器会被调度到同一个node上。Pod中的容器共享NET,PID,IPC,UTS等Linux namespace。由于容器之间共享NET namespace,所以它们使用同一个IP地址,可以通过
*localhost*
互相通信。不同pod之间可以通过IP地址访问。
-
[
*Job*
](
http://kubernetes.io/docs/user-guide/jobs/
)
描述Kubernetes上运行的作业,一次作业称为一个job,通常每个job包括一个或者多个pods,job启动后会创建这些pod并开始执行一个程序,等待这个程序执行成功并返回0则成功退出,如果执行失败,也可以配置不同的重试机制。
-
[
*Volume*
](
http://kubernetes.io/docs/user-guide/volumes/
)
存储卷,是pod内的容器都可以访问的共享目录,也是容器与node之间共享文件的方式,因为容器内的文件都是暂时存在的,当容器因为各种原因被销毁时,其内部的文件也会随之消失。通过volume,就可以将这些文件持久化存储。Kubernetes支持多种volume,例如hostPath(宿主机目录),gcePersistentDisk,awsElasticBlockStore等。
-
[
*Namespaces*
](
https://kubernetes.io/docs/user-guide/namespaces/
)
命名空间,在kubernetes中创建的所有资源对象(例如上文的pod,job)等都属于一个命名空间,在同一个命名空间中,资源对象的名字是唯一的,不同空间的资源名可以重复,命名空间主要为了对象进行逻辑上的分组便于管理。本文只使用了默认命名空间。
-
[
*PersistentVolume*
](
https://kubernetes.io/docs/user-guide/persistent-volumes/
)
: 和
[
*PersistentVolumeClaim*
](
https://kubernetes.io/docs/user-guide/persistent-volumes/#persistentvolumeclaims
)
结合,将外部的存储服务在Kubernetes中描述成为统一的资源形式,便于存储资源管理和Pod引用。
## 部署Kubernetes集群
Kubernetes提供了多种集群部署的方案,本文档内不重复介绍。这里给出集中常见的部署方法:
-
[
*minikube*
](
https://kubernetes.io/docs/getting-started-guides/minikube/
)
: 快速在本地启动一个单机的kubernetes服务器,便于本地验证和测试。
-
[
*kubeadm*
](
http://kubernetes.io/docs/getting-started-guides/kubeadm/
)
: 在不同操作系统,不同主机(Bare-Metal, AWS, GCE)条件下,快速部署集群。
-
[
*AWS EC2*
](
https://kubernetes.io/docs/getting-started-guides/aws/
)
: 在aws上快速部署集群。
-
[
*Bare-Metal*
](
https://kubernetes.io/docs/getting-started-guides/centos/centos_manual_config/
)
: 在物理机上手动部署。
可以参考
[
这个表格
](
https://kubernetes.io/docs/getting-started-guides/#table-of-solutions
)
选择适合您的场景的合适方案。
## 选择存储方案
容器不会保留在运行时生成的数据,job或者应用程序在容器中运行时生成的数据会在容器销毁时消失。为了完成分布式机器学习训练任务,需要有一个外部的存储服务来保存训练所需数据和训练输出。
常见的可选存储服务包括:
-
[
*NFS*
](
https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/nfs
)
: 可以将磁盘上某个目录共享给网络中其他机器访问。部署和配置比较简单,可以用于小量数据的验证。不提供分布式存储,高可用,冗余等功能。NFS的部署方法可以参考
[
这里
](
http://www.tecmint.com/how-to-setup-nfs-server-in-linux/
)
。
-
[
*GlusterFS*
](
http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/
)
: 网络分布式文件系统,可以在Kubernetes中按照
[
这个
](
https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/glusterfs
)
例子使用。
-
[
*Ceph*
](
http://docs.ceph.com/docs/master/
)
: 分布式文件系统,支持rbd,POSIX API接口(ceph fs)和对象存储API,参考
[
这里
](
https://kubernetes.io/docs/user-guide/volumes/#rbd
)
。
-
[
*MooseFS*
](
https://moosefs.com/documentation.html
)
: 一个分布式的存储系统。需要先挂载到服务器Node上再通过kubernetes hostPath Volume挂载到容器中。
## 配置kubectl
### 安装kubectl
```
# OS X
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
# Linux
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
# Windows
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/windows/amd64/kubectl.exe
```
### 配置kubectl访问你的kubernetes集群
编辑
`~/.kube/config`
这个配置文件,修改
`Master-IP`
的地址。如果使用SSL认证,则需要配置
`certificate-authority`
和
`users`
中的用户证书。如果是使用非SSL方式访问(比如通过8080端口),也可以去掉这些证书的配置。
```
apiVersion: v1
clusters:
- cluster:
certificate-authority: /path/to/ca.crt
server: https://[Master-IP]:443
name: minikube
contexts:
- context:
cluster: minikube
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
user:
client-certificate: /path/to/apiserver.crt
client-key: /Users/wuyi/.minikube/apiserver.key
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录