在CentOS 7上安装部署Kubernetes V1.10集群
通过参考Google和官网等资料
使用kubeadm进行前期的安装,本文无需科学上网
kubeadm是一个可以帮您以一种简单、合理安全和可扩展的方式引导一个最佳实践的Kubernetes集群的工具。它还支持为您管理Bootstrap Tokens和升级/降级集群
Before you begin.
1. 准备三台虚拟机:一台Master、两台node,安装操作系统CentOS Linux release 7.2,(由于要连互联网拉去相关镜像,我们用vbox设置好网络,启用NAT和host-only)。
2. 系统配置(三节点都需执行) |可先创建一台虚机配好系统参数后再克隆两台。
系统配置(三节点都有执行)
- 关闭SELinux和防火墙:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 修改配置永久生效,需重启
setenforce 0
#关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
- RHEL / CentOS 7上的某些用户报告了由于iptables被绕过而导致流量被错误路由的问题。应该确保net.bridge.bridge-nf-call-iptables的sysctl配置中被设置为1
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
- 关闭系统Swap:Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。方法一,通过kubelet的启动参数–fail-swap-on=false更改这个限制。方法二,关闭系统的Swap。
swapoff -a
修改/etc/fstab文件,注释掉SWAP的自动挂载,使用free -m确认swap已经关闭。
Docker安装与配置(三节点)
- 安装Docker
mkdir ~/k8s
cd k8s
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
yum install ./docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
yum install ./docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
systemctl enable docker
systemctl start docker
- 配置Docker
开启iptables filter表的FORWARD链
编辑/lib/systemd/system/docker.service,在ExecStart=..上面加入如下内容:
ExecStartPost=/usr/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
ExecStart=/usr/bin/dockerd
.....
- 配置国内镜像加速器。(如果可以科学上网此步可忽略)因为kubeadm默认要从google的镜像仓库下载镜像,但目前国内无法访问google镜像仓库,所以需要我们配置成国内的镜像仓库,并在kubeadm init前pull下所需的镜像。
使用阿里云镜像加速器:阿里云容器hub https://dev.aliyun.com/search.html;登录之后,进入管理中心–>镜像加速器–>操作文档,根据提示进行设置即可。
坑点:此处网上大部分提升:将镜像加速器网站配置到 /etc/docker/daemon.json,但是后期我pull镜像发现,依然找的是国外的镜像,花了一番功夫发现,需要在 /etc/systemd/system/multi-user.target.wants/docker.service里修改。
`找到 ExecStart= 这一行,在这行最后添加加速器地址 --registry-mirror=<加速器地址> `
systemctl daemon-reload && systemctl restart docker && systemctl status docker
验证:
docker info
或
ps -ef | grep dockerd
如果从结果中看到了配置的 --registry-mirror 参数说明配置成功。
拉镜像:
需要提前pull相关镜像,否则 kubeadm init时会报错,科学上网的可忽略。
master节点:
docker pull keveon/kube-apiserver-amd64:v1.10.0
docker pull keveon/kube-scheduler-amd64:v1.10.0
docker pull keveon/kube-controller-manager-amd64:v1.10.0
docker pull keveon/kube-proxy-amd64:v1.10.0
docker pull keveon/k8s-dns-kube-dns-amd64:1.14.8
docker pull keveon/k8s-dn