type
status
date
slug
summary
tags
category
icon
password
0x01 虚拟机网络
确保 MAC 地址和 product_uuid 的唯一性
通过虚拟机创建,因为不同虚拟机网卡可能会有变化,所以除了默认的nat上网网卡外,我单独新建了一个网段来设置静态ip
我这里使用内置的网络服务
systemd-network
,其他像NetworkManage之类的都是要安装的我这里第二张网卡名字是:ens36,所以在
/etc/systemd/network
目录下新建 ens36.network
文件IP和主机对应表 | IP | 域名 |
kmaster1 | 10.2.2.3 | kmaster1.k8s.tari.moe |
knode1 | 10.2.2.4 | knode1.k8s.tari.moe |
knode2 | 10.2.2.5 | knode2.k8s.tari.moe |
每台主机依次执行
在3个节点分别执行命令,其中 10.2.2.2 为 kmaster1节点,其他2个为node节点
依次重启网络即可
确保3个节点的 10.2.2.[2-4] 相互能 ping通
如果出现网络问题,可以通过 命令查看网关情况,如果存在两个默认网关,那么会存在问题
默认网关建议使用外网的,即设置更高的优先级,首先删除默认网关
然后设置
0x02 每个节点安装前
- 确保交换分区被禁用,不然 kubelet 起不来
例如,sudo swapoff -a
将暂时禁用交换分区。要使此更改在重启后保持不变,请确保在如/etc/fstab
、systemd.swap
等配置文件中禁用交换分区,具体取决于你的系统如何配置。
- 每台机器 2 GB 或更多的 RAM(如果少于这个数字将会影响你应用的运行内存),master节点需4GB内存,不然装完后经常POD会被杀掉
- CPU 2 核心及以上
- 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。请参见这里了解更多详细信息。
- 开启机器上的某些端口。请参见这里了解更多详细信息。
以下所有操作均在 root 用户身份下进行
安装所需的依赖,并开启相应的内核模块
编辑文件
/etc/sysctl.conf
最后一行添加并执行开启内核数据包转发
0x03 kmaster1节点
0x01 初始化集群
会提示和原本的 iptables 冲突,这里直接选 y 覆盖即可
使用 systemc cgroup
启动 containerd、kubelet 并设置为开机启动,
kubelet 现在每隔几秒就会重启,因为它陷入了一个等待 kubeadm 指令的死循环。
一开始代理不知为啥怎么也挂不上去(export 或者 proxychains 都不行),后面搭建了个 openvpn (
- 这里一定要指定 ip 地址,防止自动绑定到 openvpn 的ip 或者上网的动态ip
- 网络插件
Cilium
,需要设置--pod-network-cidr=10.217.0.0/16
:cilium/bandwidth-manager.rst at main · cilium/cilium (github.com)
保存好,下面子节点加入需要
也可以使用该命令再次显示
如果安装异常重新 init 则执行
安装完成后,执行,就可以正常使用 kubectl 啦
此时还没安装网络插件,所以 coredns 是起不来的
0x02 安装网络插件
这里用 cillium,其他插件可见
稍等一会
通过 helm 装最新版本有问题,装完后会导致整个集群不断重启 - 希望大佬指导下
0x04 knode1&2节点
即可
查看节点加入状态,如果为 Ready 就正常了
需要等一会(
kubectl describe -nkube-system xxxx
镜像拉不下来可以给node节点挂个 openvpn 代理)到此就安装完成啦