基于Docker本地运行Kubernetes
基于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的更多相关文章
- 在本地运行Kubernetes的3种主流方式
作者简介 Chris Tozzi,曾担任记者和Linux管理员.对开源技术.敏捷基础架构以及网络问题兴趣浓厚.目前担任高级内容编辑,并且是Fixate IO的DevOps分析师. 原文链接: http ...
- keycloack docker 本地运行
参考github地址:https://github.com/jboss-dockerfiles/keycloak 首先使用git 下载该项目 使用docker-compose运行项目,需要进入至doc ...
- WIN10基于Hyper-V下运行kubernetes入门问题
http://www.cnblogs.com/shanyou/p/8503839.html 安装配置好之后启动,查看ip的方法: minikube status minikube ip 查看仪表盘da ...
- 十大基于Docker的开发工具
http://www.infoq.com/cn/news/2014/08/top-10-open-source-docker FlynnFlynn是一个使用Go语言编写的开源PaaS平台,Flynn使 ...
- 微信小程序和asp.net core基于docker和nginx的交互
这个文章的题目起的比较长,我想实现这样一个产品: 前端是微信小程序,后端是基于docker运行的asp.net core webapi.webapi通过nginx实现的反向代理接入,nginx同样基于 ...
- Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务
本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...
- 搭建基于Docker社区版的Kubernetes本地集群
Kubernetes的本地集群搭建是一件颇费苦心的活,网上有各种参考资源,由于版本和容器的不断发展,搭建的方式也是各不相同,这里基于Docker CE的18.09.0版本,在Mac OS.Win10下 ...
- 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)
[编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...
- QCon技术干货:个推基于Docker和Kubernetes的微服务实践
2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目.在这个无比需要创新与速度的时代,由容器.微服务.DevOps构成的云原生席卷整个IT界.在近期举办的QCon全球软件开发大会上, ...
随机推荐
- CentOS操作系统部署zabbix agent服务
CentOS操作系统部署zabbix agent服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看zabbix的官方手册 1>.点击下载 2>.查看Ubunt ...
- ThinkPad重大更新!5款创意设计PC齐发2日
导读 日前,ThinkPad巨匠P系列专业移动工作站迎来全线更新,包括ThinkPad P1隐士2019.ThinkPad P53.ThinkPad P73.ThinkPad P43s.ThinkPa ...
- Windows环境下的32位汇编语言程序设计
一个逆向的告诉我可以尝试学一下8086处理器,再回头看一看自己学过的会有提高学呗,8086处理器怎么学....然后就学了8086的汇编, 好友就分享了琢石成器——Windows环境下的32汇编语言设计 ...
- xilinx FPGA课程学习总结
一时冲动,跑步进入了FPGA的大门,尤老师是教练,我之前一直做嵌入式软件,数字电路也是十年前大学课堂学过,早已经还给老师了.FPGA对于我来说完全是小白,所以.老师的课程,对于我来说至关重要!因为见过 ...
- 1.Maven分模块,分工程管理,多Web应用合并war包
Eclipse 创建Maven工程 修改POM文件 Eclipse 创建Module工程 以此类推,创建Maven 的Modules web工程goodsmgrweb,创建Maven的Module ...
- Netty简单认识
简介 Netty 是由JBOSS提供的一个 Java开源框架, 现在是 Github上的开源项目 Netty 是一个异步的.基于事件驱动的网络应用框架式, 用以快速开发高性能.高可靠性的网路IO程序 ...
- C# 关于AD域的操作 (首博)
前段时间(因为懒得找具体的时间了)公司说让系统可以进行对AD域的操作,包括创建用户.于是上网查资料,了解何为AD域.还不知道的这边请https://www.cnblogs.com/cnjavahome ...
- Golang的循环结构-for语句
Golang的循环结构-for语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.for循环语法 循环结构在生活中的场景也非常的多,比如: ()上班族们每天朝九晚五的生活; ( ...
- JavaScript.StringObjec.replace
//StringObject.replace(/regexp/,newContent); //1当newContent为新字符串,就直接用newContent对匹配的内容进行替换. //2当newCo ...
- 《Python爬虫技术:深入理解原理、技术与开发》已经出版,送Python基础视频课程
好消息,<Python爬虫技术:深入理解原理.技术与开发>已经出版!!! JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送Python基础视频课程!J ...