容器编排技术 -- 基于Docker本地运行Kubernetes


概览

下面的指引将高速你如何通过Docker创建一个单机、单节点的Kubernetes集群。

下图是最终的结果:

先决条件

1. 你必须拥有一台安装有Docker的机器。

2. 你的内核必须支持 memory and swap accounting 。确认你的linux内核开启了如下配置:

CONFIG_RESOURCE_COUNTERS=y
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
CONFIG_MEMCG_KMEM=y

3. 以命令行参数方式,在内核启动时开启 memory and swap accounting 选项:

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

注意:以上只适用于GRUB2。通过查看/proc/cmdline可以确认命令行参数是否已经成功

传给内核:

$cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.18.4-aufs root=/dev/sda5 ro cgroup_enable=memory
swapaccount=1

第一步:运行Etcd

docker run --net=host -d gcr.io/google_containers/etcd:2.0.12 /usr/local/bin/etcd --addr=127.0.0.1:4001 --bind-addr=0.0.0.0:4001 --data-dir=/var/etcd/data

第二步:启动master

docker run \--volume=/:/rootfs:ro \--volume=/sys:/sys:ro \--volume=/dev:/dev \--volume=/var/lib/docker/:/var/lib/docker:ro \--volume=/var/lib/kubelet/:/var/lib/kubelet:rw \--volume=/var/run:/var/run:rw \--net=host \--pid=host \--privileged=true \-d \gcr.io/google_containers/hyperkube:v1.0.1 \/hyperkube kubelet --containerized --hostname-override="127.0.0.1" --address="0.0.0.0" --api-servers=http://localhost:8080 --config=/etc/kubernetes/manifests

这一步实际上运行的是 kubelet ,并启动了一个包含其他master组件的[pod](../userguide/pods.md)。

第三步:运行service proxy

docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube proxy --master=http://127.0.0.1:8080 --v=2

测试

此时你应该已经运行起了一个Kubernetes集群。你可以下载kubectl二进制程序进行测试:

(OS X) (linux)

注意: 再OS/X上你需要通过ssh设置端口转发:

boot2docker ssh -L8080:localhost:8080

列出集群中的节点:

kubectl get nodes

应该输出以下内容:

NAME LABELS STATUS
127.0.0.1 Ready

如果你运行了不同的Kubernetes集群,你可能需要指定 -s http://localhost:8080 选项来访问本地集群。

运行一个应用

kubectl -s http://localhost:8080 run nginx --image=nginx --port=80

运行 docker ps 你应该就能看到nginx在运行。下载镜像可能需要等待几分钟。

暴露为service

kubectl expose rc nginx --port=80

运行以下命令来获取刚才创建的service的IP地址。有两个IP,第一个是内部的

(CLUSTER_IP),第二个是外部的负载均衡IP。

kubectl get svc nginx

同样你也可以通过运行以下命令只获取第一个IP(CLUSTER_IP):

kubectl get svc nginx --template={{.spec.clusterIP}}

通过第一个IP(CLUSTER_IP)访问服务:

curl <insert-cluster-ip-here>

注意如果再OSX上需要再boot2docker虚拟机上运行curl。

关于关闭集群的说明

上面的各种容器都是运行在 kubelet 程序的管理下,它会保证容器一直运行,甚至容器意外退出时也不例外。所以,如果想关闭集群,你需要首先关闭 kubelet 容器,再关闭其他。

可以使用 docker kill $(docker ps -aq) 。注意这样会关闭Docker下运行的所有容器,请谨慎使用。

容器编排技术 -- 基于Docker本地运行Kubernetes相关推荐

  1. 容器编排技术 -- 使用Vagrant本地运行Kubernetes

    容器编排技术 -- 使用Vagrant本地运行Kubernetes 使用Vagrant(和VirtualBox)运行Kubernetes是在本地机器(Linux,Mac OS X)进行运行/测试/开发 ...

  2. 基于Docker本地运行k8s(单节点)

    基于Docker本地运行Kubernetes 概览 下面的指引将高速你如何通过Docker创建一个单机.单节点的Kubernetes集群. 下图是最终的结果: 先决条件 你必须拥有一台安装有Docke ...

  3. 容器编排技术 -- 使用Minikube在Kubernetes中运行应用

    容器编排技术 -- 使用Minikube在Kubernetes中运行应用 1 目标 2 准备工作 3 创建Minikube集群 4 创建Node.js应用程序 5 创建Docker容器镜像 6 创建D ...

  4. 容器编排技术 -- 本地运行Kubrenetes v1.0

    容器编排技术 -- 本地运行Kubrenetes v1.0 环境需求 Linux 没有运行Linux?考虑下使用Vagrant在虚拟机中运行Linux,或者像Google Compute Engine ...

  5. 容器编排技术 -- Kubernetes kubectl 与 Docker 命令关系

    容器编排技术 -- Kubernetes kubectl 与 Docker 命令关系 1 docker run 2 docker ps 3 docker attach 4 docker exec 5  ...

  6. 容器编排技术 -- Kubernetes Service

    容器编排技术 -- Kubernetes Service 1 定义 Service 1.1 没有 selector 的 Service 2 VIP 和 Service 代理 2.1 userspace ...

  7. 容器编排技术 -- Kubernetes Volume

    容器编排技术 -- Kubernetes Volume 1 背景 2 Volume 类型 2.1 emptyDir 2.2 hostPath 2.3 gcePersistentDisk 2.4 aws ...

  8. 容器编排技术 -- Kubernetes 设计理念

    容器编排技术 -- Kubernetes 设计理念 1 Kubernetes 设计理念 1.1 Kubernetes设计理念与分布式系统 1.2 API设计原则 1.3 控制机制设计原则 2 Kube ...

  9. 容器编排技术 -- 创建Kubernetes集群

    容器编排技术 -- 创建Kubernetes集群 Kubernetes可以在多种平台运行,从笔记本电脑,到云服务商的虚拟机,再到机架上的裸机服务器.要创建一个Kubernetes集群,根据不同场景需要 ...

最新文章

  1. Koltin 高阶函数
  2. ASP.NET实现身份模拟
  3. 现金流量表整理及开发
  4. 【原】.Net创建Excel文件(插入数据、修改格式、生成图表)的方法
  5. vc++出现warningC4819的处理方法
  6. hello nodejs
  7. 金融科技领域的安全威胁及金融科技安全分析
  8. python3.7中文手册chm_python3.7 官方中文手册文档全套
  9. Python 基础测试题(含答案)
  10. 删除下拉框只找23火星软件_下拉框首选28火星软件
  11. 锁的等级:方法锁、对象锁、类锁
  12. C语言二维数组传参问题
  13. nodejs 运行后报错 Error: Couldn‘t find preset “es2015“ relative to directory
  14. MATLAB中求某个函数的积分并绘图
  15. 树莓派系统安装和环境配置
  16. 如何构建关系型数据库
  17. OpenCV - C++实战(05) — 颜色检测
  18. python办公自动化(2)——字符串转小、转移目标文件、判断文件是否存在(带过程与结果)
  19. 【19】简单、通用、详细---PCIEAER的蒙代尔不可能三角,怎么禁止AER的firmware first mode
  20. 版权原因,QQ不再内置flash插件,需安装二个插件

热门文章

  1. WebBrowser部分用法
  2. PHP类: SEO必备的伪原创工具 (文章重写)
  3. bootstrap3 中文手册 [下载]
  4. 基于Bootstrap的网站后台模板Metronic
  5. 绕过图片防盗链的方法
  6. php 动态加载JavaScript文件或者css文件
  7. shell脚本中数组的长度表示
  8. LeetCode 389. Find the Difference
  9. 《剑指Offer》 矩形覆盖
  10. 【AI视野·今日CV 计算机视觉论文速览 第206期】