一、概述
手工搭建 Kubernetes 集群是一件很繁琐的事情,为了简化这些操作,就产生了很多安装配置工具,如 Kubeadm ,Kubespray,RKE 等组件,我最终选择了官方的 Kubeadm 主要是不同的 Kubernetes 版本都有一些差异,Kubeadm 更新与支持的会好一些。Kubeadm 是 Kubernetes 官方提供的快速安装和初始化 Kubernetes 集群的工具,目前的还处于孵化开发状态,跟随 Kubernetes 每个新版本的发布都会同步更新, 强烈建议先看下官方的文档了解下各个组件与对象的作用。
在创建Kubernetes集群时,阿里云容器服务提供两种网络插件:Terway和Flannel。
Flannel:使用的是简单稳定的社区的Flannel CNI 插件,配合阿里云的VPC的高速网络,能给集群高性能和稳定的容器网络体验,但功能偏简单,支持的特性少,例如:不支持基于Kubernetes标准的Network Policy。
Terway:是阿里云容器服务自研的网络插件,将阿里云的弹性网卡分配给容器,支持基于Kubernetes标准的NetworkPolicy来定义容器间的访问策略,支持对单个容器做带宽的限流。对于不需要使用Network Policy的用户,可以选择Flannel,其他情况建议选择Terway。
因此,本文主要介绍flannel的简单使用。
系统环境
系统内核dockerip主机名配置
centos 7.6
3.10.0-957.el7.x86_64
19.03.5
192.168.128.130
k8s-master
2核4G
centos 7.6
3.10.0-957.el7.x86_64
19.03.5
192.168.128.131
k8s-node01
2核4G
centos 7.6
3.10.0-957.el7.x86_64
19.03.5
192.168.128.132
k8s-node02
2核4G
注意:请确保CPU至少2核,内存2G
二、准备工作
注意:k8s-master,k8s-node01,k8s-node01都必须执行。
关闭防火墙
如果各个主机启用了防火墙,需要开放Kubernetes各个组件所需要的端口,可以查看Installing kubeadm中的”Check required ports”一节。 这里简单起见在各节点禁用防火墙:
systemctl stop firewalld
systemctl disable firewalld
禁用SELINUX
# 临时禁用
setenforce 0
# 永久禁用
vim /etc/selinux/config # 或者修改/etc/sysconfig/selinux
SELINUX=disabled
修改k8s.conf文件
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
开启路由转发
echo 1 > /proc/sys/net/ipv4/ip_forward
关闭swap
# 临时关闭
swapoff -a
修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载(永久关闭swap,重启后生效)
# 注释掉以下字段
/dev/mapper/cl-swap swap swap defaults 0 0
安装docker
注意:k8s-master,k8s-node01,k8s-node01都必须执行。
这里就不再叙述了,请参考链接:
修改主机名
登录k8s-master执行
hostnamectl set-hostname k8s-master
注意:主机名不能带下划线,只能带中划线
否则安装k8s会报错
could not convert cfg to an internal cfg: nodeRegistration.name: