kubernetes 实操


written by Alex Stocks on 2019/12/08,版权所有,无授权不得转载

1 安装


kubernetes【下面简称 k8s】进化到如今已有近五年时间,足够成熟。今年一直逼着自己抽出旅途时间学习了一些 k8s 的概念,在认知上已经接受声明式编程,然书上得来终觉浅,还是得操练一番才算入门,因此决定在本人的 15吋 MabBook Pro 机器上先把 k8s 系统搭建起来。

源于本人信奉的 “慢就是快” 的尿性,不打算采用 kubeadmin 以及 minikube 等一众一键安装工具,自己采用其各个零件组装一番的形式安装以加深对系统的理解。

1.1 系统

本地15吋 MabBook Pro 机器主要配置如下:

在此系统之上,基于 vagrant + VirtualBox 安装了 3 台 Centos7 机器,统一规格如下:

现在的 Docker 都要求 CentOS 系统的内核版本不能低于 3.10,否则安装过程会遇到很多麻烦问题。

三台虚机网络配置如下:

计划以 k0 作为 k8s Master,在其上部署单节点 master 相关组件,k1 和 k2 作为 k8s worker。底层 worker 采用 docker,网络层采用 flannel。部署拓扑图如下。

整体系统参考了智超同学的 CentOS 6.5安装部署Kubernetes 1.4过程记录 一文,安装 k8s v1.4 系统。

1.2 docker

在 3 台机器之上通过 yum 方式安装 docker,操作步骤如下:

1.3 etcd

在部署 k8s 之前,需要先准备基础网络环境。本次部署使用 flannel 和 etcd 对整个集群的网络进行配置。k8s 使用了 etcd v2 作为其 kv 数据库,本次部署采用单节点集群方式,只在 k0 上部署 etcd v2。

etcd v2 直接采用 coreos 公司的二进制发行版,通过命令 wget https://github.com/coreos/etcd/releases/download/v2.3.8/etcd-v2.3.8-linux-amd64.tar.gz 下载即可。

部署过程如下:

1.4 flannel

flannel 系 CoreOS 公司出品的一个 k8s 网络管理工具,整体通信机制建立在 UDP 之上,在测试环境可以很轻松地部署起来。本次部署也直接采用 coreos 公司的二进制发行版,通过命令 wget https://github.com/coreos/flannel/releases/download/v0.6.2/flannel-v0.6.2-linux-amd64.tar.gz 下载即可。

部署过程如下:
/home/vagrant/test/k8s/flannel

flannel 部署完毕之后,可通过 ifconfig 命令启动一个 flannel0 网卡,但可以观察到 docker0 虚机网卡的 ip 和 flannel0 虚拟网卡的 ip 并不在同一个网络段。docker 容器需要借助 docker0 --> flannel0 通道与其他 node 上的 容器进行通信,所以两个网卡必须处于同一个网络子网段。

重新配置 k0 的 docker0 的 ip 过程如下:

1.5 k8s master

底层网络环境准备完后,就可以在 k0 上部署 k8s master 相关组件 apiserver/scheduler/controller-manager 了。

k8s 相关组件采用基于源码编译方式获取,编译过程如下;

1.5.1 启动 k8s master

编译出各个组件的二进制文件后,开始在 k0 上部署 k8s master 组件 kube-controller-manager、kube-dns、kube-apiserver、kube-scheduler。

部署过程如下:

1.6 k8s worker

在 k1 和 k2 上启动 k8s worker 节点 kubelet 和 kube-proxy。

部署过程如下:

参考文档

Payment

Timeline