环境准备:CentOS 7 16G Memory 16 CPUs (笔者服务器配置)
每个节点的唯一主机名,MAC地址和product_uuid
必须禁用swap为了使kubelet正常工作
swapoff
# 修改/ets/fatab,注释swap的挂载配置/重要
验证每个节点的MAC地址和product_uuid是唯一的
# 可以使用命令下面检查product_uuid:
sudo cat /sys/class/dmi/id/product_uuid
检查网络适配器
如果您有多个网络适配器,并且您的Kubernetes组件在默认路由上无法访问,我们建议您添加IP路由,以便Kubernetes集群地址通过适当的适配器
检查所需端口
Master node(s)
ProtocolDirectionPort RangePurposeTCP Inbound 6443* Kubernetes API server
TCP Inbound 2379-2380 etcd server client API
TCP Inbound 10250 Kubelet API
TCP Inbound 10251 kube-scheduler
TCP Inbound 10252 kube-controller-manager
TCP Inbound 10255 Read-only Kubelet API
Worker node(s)
ProtocolDirectionPort RangePurposeTCP Inbound 10250 Kubelet API
TCP Inbound 10255 Read-only Kubelet API
TCP Inbound 30000-32767 NodePort Services**
默认的端口范围:https://kubernetes.io/docs/concepts/services-networking/service/
安装Docker
参考:https://www.linuxidc.com/Linux/2018-03/151478.htm
Docker官方安装:https://docs.docker.com/engine/installation/
yum install -y docker
systemctl enable docker && systemctl start docker
# 不建议使用官网的docker-ce版本、支持性不是很好、使用epel源支持的docker即可
[root@aniu-k8s ~]# docker version
Client:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-68.gitec8512b.el7.centos.x86_64
Go version: go1.8.3
Git commit: ec8512b/1.12.6
Built: Mon Dec 11 16:08:42 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-68.gitec8512b.el7.centos.x86_64
Go version: go1.8.3
Git commit: ec8512b/1.12.6
Built: Mon Dec 11 16:08:42 2017
OS/Arch: linux/amd64
在每台机器上安装Docker。建议使用v1.12版本,但v1.11,v1.13和17.03版本也是可以的。版本17.06+可能有效,但尚未经过Kubernetes节点团队的测试和验证。
请以root身份根据您的操作系统执行以下命令。通过SSH连接到每个主机后,您可以通过执行sudo -i成为root用户
确保kubelet使用的cgroup驱动程序与Docker使用的相同。为了确保兼容性,您可以更新Docker,如下所示:
cat << EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# 这里使用官网配置启动docker报错/启用使用默认配置
安装kubeadm, kubelet and kubectl
kubeadm:引导群集的命令
kubelet:运行在集群中所有机器上的组件,并执行诸如启动pods和容器的组件。
kubectl: 与集群交互
配置官方kubernetes源:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
配置国内kubernetes源
# cat > /etc/yum.repo.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
EOF
禁用SELinux并关闭防火墙
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 需重启
setenforce 0
#关闭防火墙
systemctl stop firewalld && systemctl disable firewalld