设为首页 加入收藏

TOP

本机搭建三节点k8s集群(一)
2018-11-19 22:12:57 】 浏览:405
Tags:搭建 三节点 k8s 集群

毕业设计题目是写一个基于微服务的高可用应用系统。微服务的部署使用 docker + k8s,所以前提是要有一个 k8s 集群。搭建过程中遇到了一些坑,把整个流程 记录下来一是回顾搭建过程,二是希望能尽可能的帮助后来的 k8s beginners 少走些弯路。

本文的侧重点在实际操作,k8s 组件基本概念相关的信息请参考 k8s 官方文档 或 Kubernetes 指南 – by feiskyer

如果对于本文有什么建议、意见及疑问,欢迎提 issue,或直接发邮件交流(邮箱很容易能找到,不再提供)。

环境依赖

本文假设读者会使用 Linux 命令行。

k8s 的镜像源在墙外,所以需要读者掌握科学上网的技能。这个部分不属于本文的描述范围,我使用的方案是 Shadowsocks + Privoxy,有需要可以跟我交流。

- Docker    : 1.13.1
- kube*     : 1.10
- flannel   : 0.10.0
- virtualBox: 5.2.8
- OS        : ubuntu-16.04.4-server-amd64.iso

virtualBox 的版本不太重要,Docker 和 kube* 的版本最好使用 k8s 推荐的版本,否则可能会有问题,推荐的 Docker 版本可以在版本的 release 文档中查看。OS 的版本不同,后面的一些配置的方法会略有不同。

搭建目标

主机名 主机 IP flannel.1 OS 集群角色
master 192.168.99.200 10.244.0.0 Ubuntu 16.04 master
node1 192.168.99.201 10.244.1.0 Ubuntu 16.04 node
node2 192.168.99.202 10.244.2.0 Ubuntu 16.04 node

flannel.1 是 每台机器上的一个 VNI,通过 ifconfig 命令可以查看该接口的信息。

从任意一台机器 ping 另外两台机器 flanel.1 的 IP 能通就算集群搭建成功。

# from master
$ ping 10.244.1.0
PING 10.244.1.0 (10.244.1.0) 56(84) bytes of data.
64 bytes from 10.244.1.0: icmp_seq=1 ttl=64 time=0.659 ms
64 bytes from 10.244.1.0: icmp_seq=2 ttl=64 time=0.478 ms
64 bytes from 10.244.1.0: icmp_seq=3 ttl=64 time=0.613 ms
^C
--- 10.244.1.0 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.478/0.583/0.659/0.079 ms

$ ping 10.244.2.0
PING 10.244.2.0 (10.244.2.0) 56(84) bytes of data.
64 bytes from 10.244.2.0: icmp_seq=1 ttl=64 time=0.459 ms
64 bytes from 10.244.2.0: icmp_seq=2 ttl=64 time=0.504 ms
64 bytes from 10.244.2.0: icmp_seq=3 ttl=64 time=0.553 ms
^C
--- 10.244.2.0 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2058ms
rtt min/avg/max/mdev = 0.459/0.505/0.553/0.042 ms

k8s 个组件之间的关系

其实这个没必要多说,Kubernetes Components 或 Kubernetes 核心组件 – by feiskyer 讲的已经非常好了,这里提到只是强调一下这部分的重要性。

k8s Pod 网络模型简介

为了省事,我直接引用了别人画的模型图。对于本次搭建的集群模型简单描述如下:

  1. cni0 和 flannel.1 都是 VNI,由 flannel 组件创建,集群搭建完成后可以通过 ifconfig 进行查看。
  2. flannel 组件 在每台机器上运行了一个 flanneld,它是用来转发流量,解决主机间通信的问题。
  3. enp0s8 是 virtualBox 的 Host-Only 适配器。

配置流程

使用 virtualBox 创建三台虚拟机

virtualBox 安装比较简单,不再介绍,GUI 工具用起来也很方便,这部分只介绍我认为需要提示的部分。

  1. 内存推荐 2048M, CPU 推荐 2个
  2. 默认只有一个 NAT 适配器,添加一个 Host-Only Adapter。NAT 适配器是虚拟机用来访问互联网的,Host-Only 适配器是用来虚拟机之间通信的。
  3. 以 Normal Start 方式启动虚拟机安装完系统以后,因为是 server 版镜像,所以没有图形界面,直接使用用户名密码登录即可。
  4. 修改配置,enp0s8 使用静态 IP。配置请参考 SSH between Mac OS X host and Virtual Box guest。注意配置时将其中的网络接口名改成你自己的 Host-Only Adapter 对应的接口。
  5. 一台虚拟机创建完成以后可以使用 clone 方法复制出两台节点出来,注意 clone 时为新机器的网卡重新初始化 MAC 地址。
  6. 三台虚拟机的静态 IP 都配置好以后就可以使用 ssh 在本地主机的终端上操作三台虚机了。虚机使用 Headless Start 模式启动

安装 Docker

  • 三台都装

当前 Ubuntu 的 docker 版本刚好合适,所以可以直接安装,但是有必要提前查看一下 docker 版本,以免装错。

# apt search docker.io
apt-get update
apt-get install -y docker.io
systemctl enable docker
systemctl start docker

official Docker installation guides

  • docker 配置代理。镜像源在墙外,docker pull image 需要代理
mkdir -p /etc/systemd/system/docker.service.d

cat <<EOF >/etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=https://192.168.99.1:8118/"
Environment="HTTPS_PROXY=https://192.168.99.1:8118/"
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java字节码结构剖析三:方法表 下一篇Java字节码结构剖析二:字段表

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目