天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
K8S搭建(ubuntu)系列:
k8s搭建(详细演示完整一篇)
k8s搭建(二、k8s组件安装)
K8S搭建(centos)系列:
K8S搭建(centos)完整版
K8S搭建(centos)一、环境准备
K8S搭建(centos)二、服务器设置
K8S搭建(centos)三、安装Docker
K8S搭建(centos)四、安装K8S
K8S搭建(centos)五、初始化(master节点)
K8S搭建(centos)六、搭建集群
K8S搭建(centos)七、节点加入集群
K8S搭建(centos)八、从节点中使用kubectl命令
K8S搭建(centos)九、集群节点的删除
K8S搭建(centos)十、Dashboard配置(主节点)
ifconfig
uname -a
cat /proc/version
需要确保每个机器的mac地址和product_uuid唯一,如果不唯一,安装k8s可能会失败
mac address为软件地址
product_uuid为硬件地址
正常硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。
Kubernetes 使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装 失败。
查看mac address
ip link
或
ifconfig -a
查看product_uuid
cat /sys/class/dmi/id/product_uuid
或
dmidecode -s system-uuid
hostnamectl status
确保以下对应端口可用(没被别的程序占用)
master节点端口
协议 | 方向 | 端口(范围) | 作用 | 使用者 |
---|---|---|---|---|
TCP | 入站 | 6443 | kubernetes API server | 所有组件 |
TCP | 入站 | 10250 | kubelet API | kubelet、控制平面组件 |
TCP | 入站 | 10251 | kube-scheduler | kube-scheduler |
TCP | 入站 | 10252 | kube-controller-manager | kube-controller-manager |
TCP | 入站 | 2379-2380 | etcd | 服务器客户端API |
work节点端口
协议 | 方向 | 端口(范围) | 作用 | 使用者 |
---|---|---|---|---|
TCP | 入站 | 10250 | kubelet API | kubelet、控制平面组件 |
TCP | 入站 | 30000-32767 | NodePort服务 | 所有组件 |
以下操作每个节点都要来一遍
为了能正常进行k8s的安装配置,建议关闭防火墙
查看防火墙状态
systemctl status firewalld
执行命令后输出的内容如下则表示防火墙已关闭,即Active值为inactive(dead)
如未关闭则用以下命令关闭防火墙
systemctl disable --now firewalld
或
systemctl stop firewalld
systemctl disable firewalld
重启机器后生效
后续如需开启防火墙可用命令
systemctl start firewalld
systemctl enable firewalld
kubelet 在 1.8 版本以后强制要求 swap 必须关闭。要不然kubelet 无法正常启动
当内存不够时,swap会使用硬盘块充当额外内存,硬盘io较内存差异较大,严重影响性能,故每个节点都需禁用
查看交换内存使用情况
swapon -s
sudo free -m
临时禁用Swap
sudo swapoff -a
永久禁用swap,将fstab文件中的swap参数注释掉
sed -i 's/.*swap.*/#&/' /etc/fstab
或使用vim命令修改
vim /etc/fstab
重启机器后生效
swapoff命令只能临时禁用,重启后会失效
想要永久禁用,则需要用sed那行命令修改配置文件内容,修改/etc/fstab文件中的swap那一行,将其注释
但可能阿里云服务器与常规centos系统有所差异,查看fstab内容如下
cat /etc/fstab
kubelet挂载目录时会受SELinux影响,可能会报Permission denied
查看SELinux状态
sestatus
如未关闭则执行以下命令关闭,将值设为disabled或permissive
临时关闭
setenforce 0
永久禁用
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/seliux/config
或
sed -i 's/enforcing/disabled/' /etc/selinux/config
重启机器后生效
查看主机名称
cat /etc/hostname
或者
hostnamectl status
修改主机名称,使用以下命令
将master主节点命名为k8s-master
、工作节点worker1命名为k8s-worker1
、工作节点worker2命名为k8s-worker2
以master节点为例
hostnamectl set-hostname k8s-master
或者使用vim进行修改文件内容
vim /etc/hostname
针对服务器可以使用shutdown -r
来安全重启机器,对于本地虚拟机则手动关机重启即可
以master节点节点为例,其余两个节点相同操作
查看主机与ip配置信息
cat /etc/hosts
如本机ip已存在,则先删掉或注掉再进行添加,如上图最后一行
添加参数,将主机与ip绑定
cat >> /etc/hosts <
或者使用vim命令修改文件,将ip与名称参数填入
vim /etc/hosts
或者使用echo
echo "172.30.0.224 k8s-master" >> /etc/hosts
echo "172.30.0.223 k8s-worker1" >> /etc/hosts
echo "172.30.0.222 k8s-worker2" >> /etc/hosts
先查看同步状态
timedatectl status
Time zone: Asia/Shanghai(CST, +0800)
System clock synchronized: yes
NTP service: active
如未同步,则执行以下命令设置
设置时区(上海时区)
timedatectl set-timezone Asia/Shanghai
设置时间同步
systemctl enable --now chronyd
或
systemctl start chronyd
systemctl enable chronyd
然后输入date命令查看时间验证
date
如果是本地创建的虚拟机则还需执行以下命令,如果是云服务器则可忽略
当前UTC时间写入硬件时钟
timedatectl set-local-rtc 0
重启系统时间服务
systemctl restart rsyslog && systemctl restart crond
将三台服务器互相加入可信列表,互信互通无障碍
在主节点master中生成ssh秘钥,分发到每个节点
生成ssh秘钥
ssh-keygen -t rsa
一路回车即可
输出如下
复制生成的秘钥(SHA开头的那一串)到各个节点的可信列表中
ssh-copy-id root@k8s-master
ssh-copy-id root@k8s-worker1
ssh-copy-id root@k8s-worker2
由于适应的是阿里云的服务器,已经有自己的秘钥,故无法覆盖重写,如遇此情况,可跳过该小节,无影响
感谢阅读,祝君暴富!