通天战队|Kubeadm部署CentOS8三节点Kubernetes V1.18.0集群实践


通天战队|Kubeadm部署CentOS8三节点Kubernetes V1.18.0集群实践实践
提起Kubernetes相信具有多年开发经验的老司机对它并不陌生 。 Kubernetes是Google开源的一个容器编排引擎 , 它支持自动化部署、大规模可伸缩、应用容器化管理 。 在生产环境中部署一个应用程序时 , 通常要部署该应用的多个实例以便对应用请求进行负载均衡 。
在Kubernetes中 , 我们可以创建多个容器 , 每个容器里面运行一个应用实例 , 然后通过内置的负载均衡策略 , 实现对这一组应用实例的管理、发现、访问 , 而这些细节都不需要运维人员去进行复杂的手工配置和处理 。
Kubernetes的架构图如下:
通天战队|Kubeadm部署CentOS8三节点Kubernetes V1.18.0集群实践Kubernetes架构
Kubernetes的安装部署随着版本的迭代越来越容易上手 , 官网提供了多种部署安装方式 , 详细内容可以翻阅官方文档:
但是 , 根据Kubernetes官网提供的安装部署教程 , Kubeadm应该是一种比较简单的部署方式 , 它支持单节点部署 , 以及多节点安装部署 。 Kubeadm是一键部署Kubernetes的最好工具 。
笔者最近几天使用Kubeadm部署三节点的Kubernetes小的集群 , 部署过程中踩过一些坑也查阅了相关文档 , 同时也有一些感悟 。 希望通过笔记的形式记录下来 , 方便以后查阅 。 下面就将详细的部署过程记录下来:
通天战队|Kubeadm部署CentOS8三节点Kubernetes V1.18.0集群实践笔记
环境准备:
通天战队|Kubeadm部署CentOS8三节点Kubernetes V1.18.0集群实践三节点环境

  • 采用三个节点部署 , 一个master节点 , 两个node节点;
  • 三个节点分别绑定一个内网固定IP地址;
  • Linux系统版本采用CentOS 8;
  • Docker使用社区版19.03.12;
基本网络拓扑如下图:
通天战队|Kubeadm部署CentOS8三节点Kubernetes V1.18.0集群实践网络拓扑
前置条件准备:
官方文档是这样说的:
确保 iptables 工具不使用 nftables 后端
在 Linux 中 , nftables 当前可以作为内核 iptables 子系统的替代品 。iptables 工具可以充当兼容性层 , 其行为类似于 iptables 但实际上是在配置 nftables 。nftables 后端与当前的 kubeadm 软件包不兼容:它会导致重复防火墙规则并破坏 kube-proxy
分别在三个节点上执行如下命令:
update-alternatives --set iptables /usr/sbin/iptables-legacy安装Docker容器:
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine这一步操作是确保删除系统预装的老版本Docker 。
yum install -y yum-utilsyum-config-manager \--add-repo \yum-config-manager --enable docker-ce-nightly安装Docker社区版的repo仓库 。
【通天战队|Kubeadm部署CentOS8三节点Kubernetes V1.18.0集群实践】yum install docker-ce docker-ce-cli containerd.io安装社区版最新的Docker 。
安装Docker的过程中 , 可能会出现如下错误信息:


推荐阅读