基于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
  1. 以命令行参数方式,在内核启动时开启 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(单节点)相关推荐

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

    容器编排技术 -- 基于Docker本地运行Kubernetes 概览 下面的指引将高速你如何通过Docker创建一个单机.单节点的Kubernetes集群. 下图是最终的结果: 先决条件 1. 你必 ...

  2. 认识kubernetes(k8s),k8s单节点etcd部署

    认识kubernetes(k8s),k8s单节点etcd部署 一.k8s概述 (一).k8s简介 (二).k8s特性 (三).k8s群集架构与组件 (四).k8s核心概念 (五).k8s三种部署方式 ...

  3. 『中级篇』Minikube快速搭建K8S单节点环境(61)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』Minikube快速搭建K8S单节点环境(61) 去介绍k8s的集群安装,本地搭建一个k8s的集群. 不会科学上网的 ...

  4. 使用Kubeadm部署K8S单节点,速度快于二进制部署

    使用Kubeadmin部署K8S单节点,速度快于二进制部署 一. 环境准备 二.所有节点安装docker 三.所有节点安装kubeadm,kubelet和kubectl 四.部署K8S集群 五.安装d ...

  5. k8s单节点无法启动pod

    k8s单节点无法启动pod 错误信息:pod didn't tolerate 原因:默认 k8s 不允许往 master 节点装东西,强行设置下允许 解决方案:如下(参考[k8s 1.12.1 的坑和 ...

  6. 生产环境---K8s单节点二进制部署

    文章目录 一.K8s单master群集环境介绍 二.Master节点组件介绍 三.node节点组件介绍 四.实验步骤 五.Etcd群集部署 六.Flannel网络部署 七.Master节点部署 八.n ...

  7. hadoop使用docker安装和使用(单节点适合开发环境)

    本人亲测可用大家放心安装,本文适合开发环境搭建,不喜勿喷 安装环境 centos7.2 docker 18.06.0-ce(这个安装参考我的另外一篇博客https://blog.csdn.net/qq ...

  8. k8s单节点部署(master ,node部分)

    文章目录 1 部署master 组件 1.1 master01 上创建kubernetes 工作目录,创建ca证书,相关组件证书,私钥目录 1.1.1 将master.zip, k8s-cert.sh ...

  9. Linux运维容器篇 k8s单节点二进制部署(1) ECTD部署+CA证书制作

    文章目录 一.环境配置 二.制作CA证书 1.传入脚本 2.创建CA证书 3 指定节点通讯证书 三 部署etcd集群 1 安装etcd包并传入证书 配置etcd启动脚本并生成cfg文件 配置node节 ...

最新文章

  1. 皮一皮:颜值的重要。。。
  2. mybatis的执行流程
  3. RMQ(Range Minimum/Maximum Query)问题:
  4. 【Android 文件管理】分区存储 ( 分区存储机制 和 文件索引数据 )
  5. Vue的表单组件之单选按钮
  6. Linux vi编辑器常见命令的使用
  7. 任意给定一个正整数N,求一个最小的正整数M(M1),使得N*M的十进制表示形式里只含有1和0。...
  8. iOS 提交app到iTunes Connect,显示构建版本“+”号的小技巧/ 选择版本提交 无“+”号 问题/Xcode 上传成功但iTunes 不显示上传的版本的问题
  9. 高费率基金是投资者的毒药
  10. live2dmesh渲染优先级_Live2D 性能优化
  11. freyja 功能基本完毕
  12. —— GPS测量原理及应用复习-5 ——
  13. hive中reduce类函数说明
  14. Process Hacker 简单介绍
  15. 前端与美工职能上的区别
  16. 免费的云服务器,大家推荐哪个呢?
  17. windbg wt命令
  18. speak failed:not bound to TTS engine解决方案
  19. 华为nova5 pro怎么升级鸿蒙系统,鸿蒙系统终于来了!这几款华为手机都可以升级了...
  20. Android 三档自定义滑动开关,禁止点击功能的实现,用默认的seekbar组件实现

热门文章

  1. linux内核杂记(11)-进程调度(6)
  2. 【数据分析】Databricks入门:分析COVID-19
  3. 【论文解读】Graph Normalization (GN):为图神经网络学习一个有效的图归一化
  4. 【面试招聘】美团+阿里 | 机器学习算法春招面经
  5. (翻译)60分钟入门深度学习工具-PyTorch
  6. 网易云信牵手有道乐读,解密「终身阅读者」背后的技术力量
  7. 网易云信助春招上“云” ,疫情过后线上招聘或成常态
  8. 互联网1分钟 |1113
  9. 1分钟读懂直播和音视频通话的区别
  10. Windows 蠕虫首次现身 Mac 电脑:伪装成 Adobe Flash 软件