1.1 服务器规划 原创 精华
1.1 服务器规划
1.服务器配置选型
1>. 学习环境(用于k8s基础的学习)
a) 2核2G 磁盘40G足矣,可以采用单master多Node,或者多Master无Node(Master节点也可以充当Node节点)
2>. 实战环境(用于k8s实战学习,从进阶部分开始)
a) 2核4G+磁盘40G+40G,可以采用单Master多Node,
或者多Master多Node(Master节点也可以充当Node节点,总计可用node节点数为5即可)
Master节点:2核4G服务器3台。
Node节点:2核4G服务器2台。
如果要做DevOps实验,可能需要5台以上4核5G的服务器
3.企业测试环境:
a) Master节点(尽量三台实现高可用,可以将某台Master禁止调度):8核16G+ 磁盘分为系统盘(路径:/,大小100G+)、Docker数据盘(/var/lib/docker,200G+)
b) Etcd数据盘(/var/lib/etcd,50节点50G+,150节点150G+,etcd节点可以和Master节点同一个宿主机,三个节点实现高可用)
c) Node节点:无特殊要求
d) 注意:测试环境所有的数据盘可以无需区分,有条件最好单独
4>.企业生产环境:
a) Master节点:三个节点实现高可用(必须)
i. 节点数:0-100 8核16+
ii. 节点数:100-250 8核32G+
iii. 节点数:250-500 16核32G+
b) etcd节点:三个节点实现高可用(必须),有条件存储分区必须高性能SSD硬盘,没有SSD也要有高效独立磁盘
i. 节点数:0-50 2核8G+ 50G SSD存储
ii. 节点数:50-250 4核16G+ 150G SSD存储
iii. 节点数:250-1000 8核32G+ 250G SSD存储
c) Node节点:无特殊要求,主要是Docker数据分区、系统分区需要单独使用,不可以使用同一个磁盘,系统分区100G+、Docker数据分区200G+,有条件使用SSD硬盘,必须独立于系统盘
d) 其他:集群规模不大可以将etcd和master放置于同一个宿主机,
也就是每个master节点部署k8s组件和etcd服务,但是etcd的数据目录一定要独立,并且使用SSD,
两者部署在一起需要相对增加宿主机的资源,个人建议生产环境把master节点的资源一次性给够,
此处的费用不应该节省,可以直接使用16核32G或者64G的机器,之后集群扩容就无需扩容master节点的资源,减少风险。
其中master节点和etcd节点的系统分区100G即可。
注意:每个节点的ip设为静态ip地址,不能动态分配。磁盘20-40G就够了。
2.集群网段划分
1>.集群安装时会涉及到三个网段
主机节点网段:192.168.0.0/24 # 宿主机,如,k8s-master01
Service网段:10.96.0.0/12 # 集群容器通信,Service相当于Pod的一个代理
Pod网段:10.244.0.0/12或者172.16.0.1/12 # 相当于容器的IP,Pod是容器的集合,是管理容器的。
2>.需要注意的是这三个网段不能有任何交叉
容易踩的坑:
集群节点状态都是ready的,pod的所有状态也是running的,为什么网就是不通?
很可能是采用了重复的网段,导致网段冲突了。
举例:
如果宿主机的IP是:10.105.0.x。
那么service网段就不能是10.96.0.0/12,因为10.96.0.0/12网段可用IP是:10.96.0.1 ~ 10.111.255.255。10.105是在这个范围之内的,属于网络交叉,此时service网段需要更换,可以更改为192.168.0.0/16网段(注意如果service网段是192.168开头的子网掩码最好不要是12,最好为16,因为子网掩码是12他的起始IP为192.160.0.1 不是192.168.0.1)。
同样的道理,计算Pod网段也不能重复。
一般的推荐是,直接第一个开头的就不要重复,比如你的宿主机是192开头的,那么你的service可以是10.96.0.0/12.
如果你的宿主机是10开头的,就直接把service的网段改成192.168.0.0/16
如果你的宿主机是172开头的,就直接把pod网段改成192.168.0.0/12
注意搭配,尽量避免均为10网段、172网段、192网段的搭配。第一个开头数字不一样就免去了网段冲突的可能性,也可以减去计算的步骤。
表1-1 本教程使用的虚拟机IP
主机名 | IP地址 | 说明 |
---|---|---|
k8s-master01 ~ 03 | 192.168.3.35 ~ 37 | master节点 * 3 |
k8s-master-lb | 192.168.3.40 | keepalived虚拟IP |
k8s-node01 ~ 02 | 192.168.3.38 ~ 39 | worker节点 * 2 |
说明:本教程通过5台虚拟机演示K8s的安装,节点数较少,所以采用了同一网段的IP。生产环境中随时可能扩充节点,为了避免网段冲突的隐患,应注意三个网段不能有任何交叉。
注意:VIP(虚拟IP)不要和公司内网IP重复,首先去ping一下,不通才可用。VIP需要和你的Master主机在同一个局域网内(不是直接用我的VIP)!
公有云上搭建VIP是公有云的负载均衡的IP,比如阿里云的内网SLB的地址,腾讯云内网ELB的地址。不需要再搭建keepalived和haproxy。
3>.网段范围计算工具
可以通过http://tools.jb51.net/aideddesign/ip_net_calc/计算:
4>.文档修改
根据文档修改ip地址时,ctrl+F,批量查找和替换为自己的ip地址。如,192.168.3.35 ~ 37批量改为自己的节点IP。装多台虚拟机,就批量替换多次。批量替换宿主机、Pod网段、Service网段。
k8s-master-lb 是不占任何机器的。
注意:以下两个是固定的ip规则:
Service网段中“Kubernetes Service”占其网段的第一个可用ip,如,192.168.0.1批量替换为我们的,如,10.96.0.1。
CoreDNS:占其网段的第十个可用ip,如,192.168.0.10。批量替换为我们的,如,10.96.0.10。
3.服务器操作系统选型
服务器操作系统选择CentOS 7.9。不要选CentOS8, 该版本在2021年就不被官方不维护了,以后是CentOS Stream。CentOS7会维护到2024年。
下载地址: https://www.centos.org/download/
选择阿里云镜像:
可选择DVD-2009.iso版本或Minimal-s009.iso的版本。
前排支持大佬新教程!