基于Docker本地运行k8s(单节点)
基于Docker本地运行Kubernetes
概览
下面的指引将高速你如何通过Docker创建一个单机、单节点的Kubernetes集群。
下图是最终的结果:
先决条件
你必须拥有一台安装有Docker的机器。
你的内核必须支持 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
- 以命令行参数方式,在内核启动时开启 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下运行的所有容器,请谨慎使用。
参考链接:
https://www.kubernetes.org.cn/doc-5
基于Docker本地运行k8s(单节点)相关推荐
- 容器编排技术 -- 基于Docker本地运行Kubernetes
容器编排技术 -- 基于Docker本地运行Kubernetes 概览 下面的指引将高速你如何通过Docker创建一个单机.单节点的Kubernetes集群. 下图是最终的结果: 先决条件 1. 你必 ...
- 认识kubernetes(k8s),k8s单节点etcd部署
认识kubernetes(k8s),k8s单节点etcd部署 一.k8s概述 (一).k8s简介 (二).k8s特性 (三).k8s群集架构与组件 (四).k8s核心概念 (五).k8s三种部署方式 ...
- 『中级篇』Minikube快速搭建K8S单节点环境(61)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』Minikube快速搭建K8S单节点环境(61) 去介绍k8s的集群安装,本地搭建一个k8s的集群. 不会科学上网的 ...
- 使用Kubeadm部署K8S单节点,速度快于二进制部署
使用Kubeadmin部署K8S单节点,速度快于二进制部署 一. 环境准备 二.所有节点安装docker 三.所有节点安装kubeadm,kubelet和kubectl 四.部署K8S集群 五.安装d ...
- k8s单节点无法启动pod
k8s单节点无法启动pod 错误信息:pod didn't tolerate 原因:默认 k8s 不允许往 master 节点装东西,强行设置下允许 解决方案:如下(参考[k8s 1.12.1 的坑和 ...
- 生产环境---K8s单节点二进制部署
文章目录 一.K8s单master群集环境介绍 二.Master节点组件介绍 三.node节点组件介绍 四.实验步骤 五.Etcd群集部署 六.Flannel网络部署 七.Master节点部署 八.n ...
- hadoop使用docker安装和使用(单节点适合开发环境)
本人亲测可用大家放心安装,本文适合开发环境搭建,不喜勿喷 安装环境 centos7.2 docker 18.06.0-ce(这个安装参考我的另外一篇博客https://blog.csdn.net/qq ...
- k8s单节点部署(master ,node部分)
文章目录 1 部署master 组件 1.1 master01 上创建kubernetes 工作目录,创建ca证书,相关组件证书,私钥目录 1.1.1 将master.zip, k8s-cert.sh ...
- Linux运维容器篇 k8s单节点二进制部署(1) ECTD部署+CA证书制作
文章目录 一.环境配置 二.制作CA证书 1.传入脚本 2.创建CA证书 3 指定节点通讯证书 三 部署etcd集群 1 安装etcd包并传入证书 配置etcd启动脚本并生成cfg文件 配置node节 ...
最新文章
- 皮一皮:颜值的重要。。。
- mybatis的执行流程
- RMQ(Range Minimum/Maximum Query)问题:
- 【Android 文件管理】分区存储 ( 分区存储机制 和 文件索引数据 )
- Vue的表单组件之单选按钮
- Linux vi编辑器常见命令的使用
- 任意给定一个正整数N,求一个最小的正整数M(M1),使得N*M的十进制表示形式里只含有1和0。...
- iOS 提交app到iTunes Connect,显示构建版本“+”号的小技巧/ 选择版本提交 无“+”号 问题/Xcode 上传成功但iTunes 不显示上传的版本的问题
- 高费率基金是投资者的毒药
- live2dmesh渲染优先级_Live2D 性能优化
- freyja 功能基本完毕
- —— GPS测量原理及应用复习-5 ——
- hive中reduce类函数说明
- Process Hacker 简单介绍
- 前端与美工职能上的区别
- 免费的云服务器,大家推荐哪个呢?
- windbg wt命令
- speak failed:not bound to TTS engine解决方案
- 华为nova5 pro怎么升级鸿蒙系统,鸿蒙系统终于来了!这几款华为手机都可以升级了...
- Android 三档自定义滑动开关,禁止点击功能的实现,用默认的seekbar组件实现
热门文章
- linux内核杂记(11)-进程调度(6)
- 【数据分析】Databricks入门:分析COVID-19
- 【论文解读】Graph Normalization (GN):为图神经网络学习一个有效的图归一化
- 【面试招聘】美团+阿里 | 机器学习算法春招面经
- (翻译)60分钟入门深度学习工具-PyTorch
- 网易云信牵手有道乐读,解密「终身阅读者」背后的技术力量
- 网易云信助春招上“云” ,疫情过后线上招聘或成常态
- 互联网1分钟 |1113
- 1分钟读懂直播和音视频通话的区别
- Windows 蠕虫首次现身 Mac 电脑:伪装成 Adobe Flash 软件