Posts

Showing posts with the label Kubernetes

Microsoft实习手记第三篇 Kubeflow部署

Image
0. 本文记录一下如何把kubeflow部署在一个已有的k8s集群上 1. 配置~/.kube/config ,保证kubectl 能访问到目标cluster 2. 这里用的kfctl v0.5.1  https://github.com/kubeflow/kubeflow/tree/v0.5-branch  来deploy kubeflow kfctl 现在(2019/7/12) 使用非常不稳定,command 执行参数也经常改动,并且和教程并不匹配 https://github.com/kubeflow/website/commit/3a307d0a7689ee0863b83aa3de0d4ad6922d99db#diff-fe297c0331c2049d61d5c1972e94abfaR78 我这里参照的是3a307d0a7689ee0863b83aa3de0d4ad6922d99db这个commit之前的官方教程 kfctl 通过这个链接来wget 然后tar xvf 解压 https://github.com/kubeflow/kubeflow/releases/download/v0.5.1/kfctl_v0.5.1_linux.tar.gz 3. export KFAPP=folder_to_your_local_target_folder kfctl init \${KFAPP} # 这里看到在目标文件夹会多一个app.yaml文件,可以通过编辑它来改目标的namespace cd ${KFAPP} kfctl generate all -V # 这步我在k8s的node集群之外,比如本机的终端运行会有报错。但是在我ssh上去再跑就ok了。 不知道什么原因 kfctl apply all -V 4. 这样在k8s集群上的kubeflow(默认是这个namespace) 就部署起来了 接下来通过端口转发来通过浏览器访问kubeflow export NAMESPACE=kubeflow kubectl.exe port-forward svc/ambassador -n ${NAMESPACE} 8080:80 http://localhost:8...

Microsoft实习手记第一篇 Kubernetes

Image
0x00 在实习的第一个Sprint,了解了组里的业务,我这块主要建立在k8s集群上,在这个之上构建分布式机器学习的平台。 由于之前只接触过本机的docker,一时之间触及k8s集群还是有点懵,这里记录些工具和概念。 0x01 概念 k8s集群中的机器们被分成两种 Master Server 和 Kubernetes Node. ref:  https://www.cnblogs.com/menkeyi/p/7134460.html “Node是Kubernetes中的工作节点,最开始被称为minion。一个Node可以是VM或物理机。每个Node(节点)具有运行 pod 的一些必要服务,并由Master组件进行管理,Node节点上的服务包括Docker、kubelet和kube-proxy” ----say by  here 这里引入了一个新的概念Pod。 一言以蔽之:“Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程” ----say by here 这里的Pod里面运行着具体的container,终于触碰到我的已有认知了,这里的container就是docker概念里的那个,通过image产生的实例. Pod : 为什么说Pod是k8s创建或部署的最小单位呢?因为它不直接控制container。一个pod可以包含一个或者多个container,然后k8s直接控制的是pod。在我接触的case中,一个pod包含了多个container,其中一个是负责业务逻辑的,另外的会负责pull data, pull code dependancy..., 以及挂载存储等等。 因为单个pod是一个脆弱的资源,可能因为某些原因crash。对于集群来说需要有个东西来维护它的扩展,重启等等事情。这部分工作不是pod自己来做的,而是交给Controller。 Controller : 可以创建和管理多个Pod,提供副本管理、滚动升级和集群级别的自愈能力。例如,如果一个Node故障,Controller就能自动将该节点上的Pod调度到其他健康的Node上。包含一个或者多个Pod的Controller示例: Deployment Stat...