文章目录
前言
鉴于目前市面上的云服务提供商已经提供Kubernetes云托管服务,比如Google kubernetes Engine(GKE),Azure Kubernetes Service(AKS),Alibaba Kuberntes Service等等,直接使用他们的服务能够免去自己维护的工作,所以在实际工作中我们不一定需要自己搭建Kubernetes。
作为学习,这里我总结一下如何自己搭建一个简易的Kubernetes集群。搭建Kubernetes集群有两种方法:
- 使用Kuberadm工具。
- 直接下载binary文件搭建。
使用Kuberadm工具搭建比较快捷而使用binary文件搭建比较繁琐但能够加深对Kubernetes各个模块的理解,两种方法各有利弊,这里我介绍一下用Kubeadm方法怎么搭建,官方网站上也有具体的介绍:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/。
一、配置要求
我们搭建的这个简易Kubernetes集群包含一个Master Node和两个Worker Nodes。对于机器的最低要求是2核2G。机器少于两核,则节点无法启动。我在阿里云同一个账号上购买了3台机器,为期一周,用于学习搭建。在阿里云同一个账号下购买3台机器的好处在于,只要给这3台机器配置同一个安全组,就能够互相ping通,省去不少时间。
机器 | 配置要求 | 操作系统 |
---|---|---|
Master | 2核2G | CentOS 7.X |
Node1 | 2核2G | CentOS 7.X |
Node2 | 2核2G | CentOS 7.X |
二、环境配置
从Terminal中打开3个tab,分别ssh
连接到这3台机器。接下来我们首先配置环境,以下的环境配置都是需要在3台机器上完成的,为了节省时间,这里建议同步3个terminal tab以方便同时往3台机器输入指令。方法为同时按住Cmd
+ Shift
+ i
,再次按下即可取消同步。
1. 主机名解析
为了方便调用,这里先解析一下主机名。IP地址为阿里云中机器的私有IP。
> vim /etc/hosts
......
172.23.246.224 master
172.23.246.223 node1
172.23.246.222 node2
之后3台机器之间应该能用主机名相互ping通。(阿里云同一个账户下机器只要配置同一个安全组即可相互ping通,其他环境下需要额外的设置)。
> ping node1
PING node1 (172.23.246.223) 56(84) bytes of data.
64 bytes from node1 (172.23.246.223): icmp_seq=1 ttl=64 time=0.295 ms
64 bytes from node1 (172.23.246.223): icmp_seq=2 ttl=64 time=0.234 ms
64 bytes from node1 (172.23.246.223): icmp_seq=3 ttl=64 time=0.253 ms
......
2. 同步时间
因为Kubernetes内部机器之间安全通信涉及到证书(Certificate),如果机器之前时间不同步,可能会导致证书校验失败,所以我们要同步一下3台机器的时间。
> ntpdate 0.asia.pool.ntp.org
4 Apr 10:41:42 ntpdate[22577]: adjust time server 202.28.93.5 offset 0.059386 sec
> date
Sun Apr 4 10:41:50 CST 2021
3. 关闭防火墙 firewalld
> systemctl stop firewalld
> systemctl disable firewalld
4. 关闭selinux
selinux是Linux下一个安全服务,如果不关闭,则在安装过程中可能产生各种奇怪问题。
# 检查是否已经关闭
> getenforce
Disabled
# 如果未关闭,可以修改配置文件关闭
> cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux securit