使用kubeadm工具箱创建Kubernetes集群

环境准备: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 RangePurpose
TCP   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 RangePurpose
TCP   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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/04baa94af211f0afbc53451212d4d520.html