一、环境要求
-
操作系统CentOS 7.x-86_x64
-
硬件配置:内存2GB或2G+,CPU 2核或CPU 2核+,需要在虚拟机中提前设置好,不然后续会报错
二、系统初始化
1、设置主机名
# 在master节点执行
2、配置主机和IP映射,注意IP换成自己的
3、安装依赖包
4、设置防火墙为iptables并设置空规则
# 关闭防火墙
# 清理防火墙规则,设置默认转发策略
5、关闭 selinux 和 swap交换分区
# 禁用swap分区
# 禁用 selinux
6、配置内核参数,将桥接的IPv4流量传递到iptables的链
# 加载模块
cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
# 重新加载配置
7、时间同步
8、关闭不需要的服务
9、升级linux内核
-
CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定
# 查看内核版本
# 升级版本
#设置开机从新内核启动(设置如下图版本号)
#重启电脑
升级成功之后,查看内核版本如下图
至此,所有的准备工作已经完成。
三、Kubeadm安装
1、k8s配置使用ipvs为代理,kube-proxy开启ipvs的前置条件
# 加载模块
# 修改访问权限
2、配置国内yum源
3、安装Docker
# 安装必要的一些系统工具
# 添加软件源信息
# 更新并安装Docker-ce
# 配置daemon(添加 YUM 软件源),注意IP换成自己的
# 重启docker 服务
#查看docker版本
4、配置k8s的阿里云yum源
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
5、安装 kubeadm、kubelet 和 kubectl , 每个节点都需要安装
-
Kubelet:运行在cluster所有节点上,负责启动pod和容器
-
Kubeadm:用于初始化cluster的一个工具
-
Kubectl:命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件
# 安装指定版本
# 查看kubelet状态,至此,kubelet已经安装完毕。
# 启动 kubelet 服务
此时查看状态像是出错的样子,实际上只是没有初始化集群,只安装了服务,所以会有上述红色提示,不必在意。
# 查看已经安装的版本
6、初始化主节点(只在master节点上执行),注意IP换成自己的
-
kubernetes-version:K8s版本,与上面安装的一致
-
apiserver-advertise-address:master主机内网IP地址
-
image-repository:指定阿里云镜像仓库地址。由于kubeadm 默认从官网http://k8s.grc.io下载所需镜像,国内无法访问,因此需要指定阿里云镜像仓库地址
-
service-cidr:集群内部虚拟网络,Pod统一访问入口
-
pod-network-cidr: 定义pod网段为:10.244.0.0/16
如果安装报错,可以通过以下命令查看日志
journalctl -xeu kubelet -l
-
安装完成,如下图
不过多等一会儿依然可以成功
7、配置Kubectl工具
8、查看集群状态
-
通过以下命令查看集群信息,发现已经有master01节点了,但是状态为:NotReady,原因为未安装flannel插件,如下图
# 查看节点状态
# 查看system下的pods
# 此时查看服务状态
至此k8s创建完毕。