为了以后能够快速部署k8s集群,按集群部署的先决条件提前做好初始化配置,并制作成虚拟机模板,便于以后有需要就可以直接从这个模板克隆(建议链接克隆)虚拟机出来部署master、node、网络插件等。
- 确保每个节点上MAC地址的唯一性
vmware workstation虚拟机设置中,网卡的高级选项里可重新生成mac地址。
- 确保product_uuid的唯一性 查看product_uuid
cat /sys/class/dmi/id/product_uuid
vmware workstation中链接克隆后,会自动更新product_uuid。
- 放通所需端口
使用的Pod网络插件也可能需要开启某些特定端口,由于各个Pod网络插件的功能都有所不同,可参阅他们各自文档中对端口的要求。
如果制作的模板未启用防火墙,就无需提前配置防火墙策略,忽略这个步骤。
- 控制节点
协议 | 方向 | 端口范围 | 目的 | 使用者 |
TCP | 入站 | 6443 | Kubernetes API server | 所有 |
TCP | 入站 | 2379-2380 | etcd server client API | kube-apiserver, etcd |
TCP | 入站 | 10250 | Kubelet API | 自身, 控制面 |
TCP | 入站 | 10259 | kube-scheduler | 自身 |
TCP | 入站 | 10257 | kube-controller-manager | 自身 |
etcd 的端口也列举在控制节点部分,但也可以在外部自建etcd集群或者自定义端口。
- 工作节点
协议 | 方向 | 端口范围 | 目的 | 使用者 | |||
TCP | 入站 | 10250 | Kubelet API | 自身, 控制面 | |||
TCP | 入站 | 30000-32767 | NodePort Services† | 所有 |
所有默认端口都可以重新配置。当使用自定义的端口时,需要打开这些端口来代替这里提到的默认端口。
- 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
- 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
- 禁止swap分区
sed -ri 's/.*swap.*/#&/' /etc/fstab
- 将桥接的IPv4流量传递到iptables链
# 将桥接的IPv4流量传递到iptables链 cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF # 生效 sysctl --system
- 同步时间
# 同步阿里云时间 ntpdate ntp1.aliyun.com # 开机同步 chmod 755 /etc/rc.d/rc.local echo "ntpdate ntp1.aliyun.com" >> /etc/rc.local # 或 echo "ntp1.aliyun.com" > /etc/ntp/step-tickers
- 安装Docker
#查看有哪些版本 yum list docker-ce --showduplicates | sort -r # 不指定版本则安装最新版本 yum install docker-ce -y # 启动 systemctl enable docker systemcctl start docker # 指向阿里云镜像仓库 cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] } EOF # 重启docker systemctl restart docker
- 安装kubeadm、kubelet和kubectl
# 添加阿里云的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 # 查看当前最新版本 [root@localhost ~]# yum list kubeadm kubelet kubectl Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Available Packages kubeadm.x86_64 1.25.3-0 kubernetes kubectl.x86_64 1.25.3-0 kubernetes kubelet.x86_64 1.25.3-0 kubernetes # 不指定版本则安装最新 yum install -y kubelet kubeadm kubectl systemctl enable kubelet
到此为止,一个通用的模板就制作好了,以后有需要就可以直接从这个模板克隆(建议链接克隆)虚拟机出来部署master、node、网络插件等。