这篇文章记录了如何在一台机器上使用 VirtualBox + Ubuntu 16 搭建 Kubernetes 的整个过程,包括其中遇到的一些问题以及解决办法。
关于 Kubernetes
下面是一段来自维基百科的关于 Kubernetes 的解释:
Kubernetes(常简称为 K8s)是用于自动部署、扩展和管理「容器化(containerized)应用程序」的开源系统。该系统由 Google 设计并捐赠给 Cloud Native Computing Foundation(今属 Linux 基金会)来使用。
它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具,包括Docker等。
Kubernetes 可以为我们提供 服务发现和负载均衡
、存储编排
、自动部署和回滚
、自动完成装箱计算
、自我修复
和 密钥与配置管理
的能力。
基础环境准备
安装 VirtualBox
VirtualBox 是一种功能强大的虚拟机软件,而且是开源免费的,这是下载地址,安装 VirtualBox 非常简单,这里我就不赘述了。
下载 Ubuntu 16 系统镜像
这里我选择了 Ubuntu 16 作为系统镜像,当然你也可以使用其他系统,比如 CentOS 等,Ubuntu 16 的下载地址。
虚拟机 x3
安装好了 VirtualBox,下载了 Ubuntu 16 的镜像后,我们首先需要搭建三台 Ubuntu 16 的虚拟机。这个新建虚拟机的过程也是比较简单的,一步一步往下走就可以了。新建完成后,我们需要对每台虚拟机进行相应的配置,配置时使用的用户应该是 root
用户。
虚拟机 IP
由于我们使用的是虚拟机,我们会给每台虚拟机配置网卡,让每台虚拟机都可以上网的,这里有两种方式:
- 使用
桥接网卡
,每台虚拟机的 IP 将会是宿主机网段的,支持虚拟机上网 - 使用
NAT 网络
+ 端口转发,网段自行设置,支持虚拟机上网
大家可以使用其中任意一种方式给虚拟机配置网卡,从而让虚拟机可以上网。
需要注意的是,在集群搭建完成后,集群中的每个节点的 IP 要求保持不变,否则节点需要重新加入。
简单的方式就是让虚拟机不关机,而是进入睡眠状态,下次只需唤醒即可。
在集群中,我们使用的是内网地址,可以通过 ifconfig
或者 ip addr
找到每台虚拟机对应的内网地址:
> ifconfig
enp0s3 Link encap:Ethernet HWaddr 08:00:27:6f:23:2a
inet addr:10.0.2.4 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe6f:232a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3277016 errors:0 dropped:0 overruns:0 frame:0
TX packets:3385793 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1084480916 (1.0 GB) TX bytes:2079122979