“开箱即用” 的 Kubernetes 集群 | Linux 中国

2018 年 4 月 28 日 Linux中国 译者:qhwdw
当你想在云上创建一个集群或者尽可能快地构建基础设施时,你可能会用到它。
-- Alex Ellis

致谢
编译自 | https://blog.alexellis.io/your-instant-kubernetes-cluster/ 
 作者 | Alex Ellis
 译者 | qhwdw 🌟 🌟 🌟 🌟 🌟 共计翻译:105 篇 贡献时间:177 天

这是我以前的 10 分钟内配置 Kubernetes[1] 教程的精简版和更新版。我删除了一些我认为可以去掉的内容,所以,这个指南仍然是通顺的。当你想在云上创建一个集群或者尽可能快地构建基础设施时,你可能会用到它。

1.0 挑选一个主机

我们在本指南中将使用 Ubuntu 16.04,这样你就可以直接拷贝/粘贴所有的指令。下面是我用本指南测试过的几种环境。根据你运行的主机,你可以从中挑选一个。

◈  DigitalOcean [2] - 开发者云
◈  Civo [3] - UK 开发者云
◈  Packet [4] - 裸机云
◈ 2x Dell Intel i7 服务器 —— 它在我家中

Civo 是一个相对较新的开发者云,我比较喜欢的一点是,它开机时间只有 25 秒,我就在英国,因此,它的延迟很低。

1.1 准备机器

你可以使用一个单台主机进行测试,但是,我建议你至少使用三台机器,这样你就有一个主节点和两个工作节点。

下面是一些其他的指导原则:

◈ 最好选至少有 2 GB 内存的双核主机
◈ 在准备主机的时候,如果你可以自定义用户名,那么就不要使用 root。例如,Civo 通常让你在  ubuntucivo 或者  root 中选一个。

现在,在每台机器上都运行以下的步骤。它将需要 5-10 钟时间。如果你觉得太慢了,你可以使用我放在 Gist[5] 的脚本 :

   
     
     
     
  1. $ curl -sL https://gist.githubusercontent.com/alexellis/e8bbec45c75ea38da5547746c0ca4b0c/raw/23fc4cd13910eac646b13c4f8812bab3eeebab4c/configure.sh | sh

1.2 登入和安装 Docker

从 Ubuntu 的 apt 仓库中安装 Docker。它的版本可能有点老,但是,Kubernetes 在老版本的 Docker 中是测试过的,工作的很好。

   
     
     
     
  1. $ sudo apt-get update \

  2.  && sudo apt-get install -qy docker.io

1.3 禁用 swap 文件

这是 Kubernetes 的强制步骤。实现它很简单,编辑 /etc/fstab 文件,然后注释掉引用 swap 的行即可。

保存它,重启后输入 sudo swapoff -a

一开始就禁用 swap 内存,你可能觉得这个要求很奇怪,如果你对这个做法感到好奇,你可以去 这里阅读它的相关内容[6]

1.4 安装 Kubernetes 包

   
     
     
     
  1. $ sudo apt-get update \

  2.  && sudo apt-get install -y apt-transport-https \

  3.  && curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

  4. $ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" \

  5.  | sudo tee -a /etc/apt/sources.list.d/kubernetes.list \

  6.  && sudo apt-get update

  7. $ sudo apt-get update \

  8.  && sudo apt-get install -y \

  9.  kubelet \

  10.  kubeadm \

  11.  kubernetes-cni

1.5 创建集群

这时候,我们使用 kubeadm 初始化主节点并创建集群。这一步仅在主节点上操作。

虽然有警告,但是 Weaveworks[7] 和 Lucas(他们是维护者)向我保证,kubeadm 是可用于生产系统的。

   
     
     
     
  1. $ sudo kubeadm init

如果你错过一个步骤或者有问题,kubeadm 将会及时告诉你。

我们复制一份 Kube 配置:

   
     
     
     
  1. mkdir -p $HOME/.kube  

  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  

  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config

确保你一定要记下如下的加入 token 的命令。

   
     
     
     
  1. $ sudo kubeadm join --token c30633.d178035db2b4bb9a 10.0.0.5:6443 --discovery-token-ca-cert-hash sha256:<hash>

2.0 安装网络

许多网络提供商提供了 Kubernetes 支持,但是,默认情况下 Kubernetes 都没有包括。这里我们使用来自  Weaveworks[7] 的 Weave Net,它是 Kebernetes 社区中非常流行的选择之一。它近乎不需要额外配置的 “开箱即用”。

   
     
     
     
  1. $ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

如果在你的主机上启用了私有网络,那么,你可能需要去修改 Weavenet 使用的私有子网络,以便于为 Pod(容器)分配 IP 地址。下面是命令示例:

   
     
     
     
  1. $ curl -SL "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')&env.IPALLOC_RANGE=172.16.6.64/27" \

  2. | kubectl apply -f -

Weave 也有很酷的称为 Weave Cloud 的可视化工具。它是免费的,你可以在它上面看到你的 Pod 之间的路径流量。这里有一个使用 OpenFaaS 项目的示例[8]

2.2 在集群中加入工作节点

现在,你可以切换到你的每一台工作节点,然后使用 1.5 节中的 kubeadm join 命令。运行完成后,登出那个工作节点。

3.0 收获

到此为止 —— 我们全部配置完成了。你现在有一个正在运行着的集群,你可以在它上面部署应用程序。如果你需要设置仪表板 UI,你可以去参考 Kubernetes 文档[9]

   
     
     
     
  1. $ kubectl get nodes

  2. NAME        STATUS    ROLES     AGE       VERSION  

  3. openfaas1   Ready     master    20m       v1.9.2  

  4. openfaas2   Ready     <none>    19m       v1.9.2  

  5. openfaas3   Ready     <none>    19m       v1.9.2  

如果你想看到我一步一步创建集群并且展示 kubectl 如何工作的视频,你可以看下面我的视频,你可以订阅它。

你也可以在你的 Mac 电脑上,使用 Minikube 或者 Docker 的 Mac Edge 版本,安装一个 “开箱即用” 的 Kubernetes 集群。阅读在这里的我的评估和第一印象[10]


via: https://blog.alexellis.io/your-instant-kubernetes-cluster/

作者:Alex Ellis[12] 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


登录查看更多
0

相关内容

Kubernetes 是一个自动化部署,扩展,以及容器化管理应用程序的开源系统。
打怪升级!2020机器学习工程师技术路线图
专知会员服务
99+阅读 · 2020年6月3日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
226+阅读 · 2020年3月22日
【资源】100+本免费数据科学书
专知会员服务
108+阅读 · 2020年3月17日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
70+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
96+阅读 · 2019年12月4日
MIT新书《强化学习与最优控制》
专知会员服务
278+阅读 · 2019年10月9日
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
I2P - 适用于黑客的Android应用程序
黑白之道
32+阅读 · 2019年3月6日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Knowledge Flow: Improve Upon Your Teachers
Arxiv
5+阅读 · 2019年4月11日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Arxiv
5+阅读 · 2018年10月23日
Arxiv
5+阅读 · 2018年5月1日
VIP会员
相关VIP内容
相关资讯
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
I2P - 适用于黑客的Android应用程序
黑白之道
32+阅读 · 2019年3月6日
如何编写完美的 Python 命令行程序?
CSDN
5+阅读 · 2019年1月19日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
相关论文
Top
微信扫码咨询专知VIP会员