技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Kubernetes>正文
k8s集群搭建之服务器系统初始化设置
2022年01月03日 Kubernetes 暂无评论 ⁄ 被围观 6,241次+

服务器操作系统: CentOS7.x_x64,在所有服务器上进行操作。

2.1 修改主机名

#设置主机名为k8s-master1

hostname k8s-master1

hostnamectl set-hostname k8s-master1

vi /etc/hostname #编辑配置文件

k8s-master1 #修改localhost.localdomain为k8s-master1

:wq! #保存退出

vi /etc/hosts #编辑配置文件

127.0.0.1 localhost k8s-master1 #修改localhost.localdomain为k8s-master1

#其他服务器执行相同的操作,把主机名称分别修改为服务器角色对应的名称

2.2 安装系统依赖包

yum install -y ipset ipvsadm

yum install -y openssl-devel openssl

yum install -y make gcc* gcc-c++

yum install -y bzip2 tar conntrack conntrack-tools sysstat curl iptables libseccomp lrzsz ntpdate git unzip vim ntp net-tools epel-release nfs-utils ntp wget yum-utils device-mapper-persistent-data lvm2

2.3 升级系统内核

CentOS 7.x默认内核版本是Linux 3.10,部署k8s等项目建议升级到高版本的内核。

CentOS 7.x内核RPM包下载地址:

https://elrepo.org/linux/kernel/el7/x86_64/RPMS/

选择lt版本(长期支持)

kernel-lt-5.4.163-1.el7.elrepo.x86_64.rpm

kernel-lt-devel-5.4.163-1.el7.elrepo.x86_64.rpm

注意:内核版本是不定期更新的,旧版本的下载地址会失效,选择当前最新版本下载即可,安装方法都一样。

cd /usr/local/src

wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.163-1.el7.elrepo.x86_64.rpm

wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.163-1.el7.elrepo.x86_64.rpm

#安装

yum install -y kernel-lt-5.4.163-1.el7.elrepo.x86_64.rpm

yum install -y kernel-lt-devel-5.4.163-1.el7.elrepo.x86_64.rpm

#注意:kernel-lt是内核包,kernel-lt-devel是与内核相匹配的内核开发环境,都需要升级,必须保证内核开发环境和内核版本一致。

#查看系统上的所有可用内核

[root@k8s-master1 src]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

0 : CentOS Linux (5.4.163-1.el7.elrepo.x86_64) 7 (Core)

1 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)

2 : CentOS Linux (0-rescue-2aaf6a587102425da09a55cad51a2c2f) 7 (Core)

#设置默认内核为我们刚才升级的内核版本

cp /etc/default/grub /etc/default/grub-bak #备份

grub2-set-default 0 #设置默认内核版本

vi /etc/default/grub

GRUB_DEFAULT=saved修改为:

GRUB_DEFAULT=0

:wq! #保存退出

#重新创建内核配置

grub2-mkconfig -o /boot/grub2/grub.cfg

#查看默认内核

grubby --default-kernel

grub2-editenv list

yum makecache #更新软件包

reboot #重启,现在系统默认内核已经是我们刚才升级后的最新版本

#重启后查看内核版本

[root@k8s-master1 ~]# uname -r

5.4.163-1.el7.elrepo.x86_64

#查看内核包信息

[root@k8s-master1 ~]# uname -a ; rpm -qa kernel\* | sort

Linux master01.k8s 5.4.163-1.el7.elrepo.x86_64 #1 SMP Tue Nov 30 12:12:53 EST 2021 x86_64 x86_64 x86_64 GNU/Linux

kernel-3.10.0-1160.el7.x86_64

kernel-headers-3.10.0-1160.49.1.el7.x86_64

kernel-lt-5.4.163-1.el7.elrepo.x86_64

kernel-lt-devel-5.4.163-1.el7.elrepo.x86_64

kernel-tools-3.10.0-1160.el7.x86_64

kernel-tools-libs-3.10.0-1160.el7.x86_64

[root@master01 ~]#

2.4 防火墙设置

CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙,并清空规则。

2.4.1关闭firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

systemctl mask firewalld

systemctl stop firewalld

yum remove firewalld -y #卸载

2.4.2安装iptables防火墙

yum install iptables-services -y #安装

systemctl enable iptables.service #设置防火墙开机启动

iptables -F #清空规则

service iptables save #保存配置规则

systemctl restart iptables.service #启动防火墙使配置生效

[root@k8s-master1 ~]# cat /etc/sysconfig/iptables #查看防火墙配置文件

# Generated by iptables-save v1.4.21 on Mon Dec 6 02:41:09 2021

*filter

:INPUT ACCEPT [5:296]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [6:564]

COMMIT

# Completed on Mon Dec 6 02:41:09 2021

2.5 关闭selinux

#执行以下命令

setenforce 0

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

reboot #重启系统

/usr/sbin/sestatus -v #查看selinux状态,disabled表示关闭

[root@k8s-master1 ~]# /usr/sbin/sestatus -v

SELinux status: disabled

2.6 关闭交换分区

#执行以下命令

swapoff -a

sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

[root@k8s-master1 ~]# free -m

total used free shared buff/cache available

Mem: 3908 891 479 17 2537 2902

Swap: 0 0 0

2.7 关闭系统不需要的服务

systemctl stop postfix

systemctl disable postfix

systemctl stop dnsmasq

systemctl disable dnsmasq

2.8 同步系统时间

2.8.1设置服务器时区

rm -rf /etc/localtime #先删除默认的时区设置

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #替换上海/北京作为默认

vi /etc/sysconfig/clock #添加时区

Zone=Asia/Shanghai

:wq! #保存退出

2.8.2同步时间

ntpdate ntp.aliyun.com #执行时间同步

hwclock --systohc -u #系统时钟和硬件时钟同步

#添加计划任务,每天零点同步一次时间

echo -e "0 0 * * * /usr/sbin/ntpdate ntp.aliyun.com & >/dev/null" >> /var/spool/cron/root

date #显示系统时间

[root@k8s-master1 ~]# date

Tue Dec 21 16:49:04 CST 2021

2.9 修改服务器hosts解析

2.9.1 k8s-master节点和node节点通讯需要用到hosts解析,需要在所有的master和node设置hosts解析

cat >> /etc/hosts << EOF

192.168.21.61 k8s-master1

192.168.21.62 k8s-master2

192.168.21.63 k8s-master3

192.168.21.81 k8s-node1

192.168.21.82 k8s-node2

192.168.21.83 k8s-node2

EOF

2.9.1 k8s-etcd集群内所有节点之间设置hosts解析

cat >> /etc/hosts << EOF

192.168.21.31 k8s-etcd1

192.168.21.32 k8s-etcd2

192.168.21.33 k8s-etcd3

EOF

2.10 调整系统内核参数

2.10.1

#执行以下命令

modprobe br_netfilter

modprobe ip_vs

modprobe ip_conntrack

cat >> /etc/rc.d/rc.local << EOF

modprobe br_netfilter

modprobe ip_vs

modprobe ip_conntrack

EOF

chmod +x /etc/rc.d/rc.local

2.10.2

vi /etc/security/limits.conf #在最后一行添加以下代码

* hard nofile 65535

* soft nofile 65535

* hard nproc 65535

* soft nproc 65535

:wq! #保存退出

#查看hard和soft限制数

ulimit -Hn

ulimit -Sn

2.10.3

vi /etc/sysctl.d/kubernetes.conf

net.bridge.bridge-nf-call-iptables = 1 #将桥接的IPv4流量传递到iptables

net.bridge.bridge-nf-call-ip6tables = 1 #将桥接的IPv4流量传递到iptables

net.bridge.bridge-nf-call-arptables=1

net.ipv4.ip_forward = 1

vm.swappiness = 0

vm.overcommit_memory = 1

vm.panic_on_oom = 0

fs.inotify.max_user_instances = 8192

fs.inotify.max_user_watches = 1048576

fs.file-max = 52706963

fs.nr_open = 52706963

net.ipv6.conf.all.disable_ipv6 = 1

net.netfilter.nf_conntrack_max = 2310720

:wq! #保存退出

sysctl --system

sysctl -p /etc/sysctl.d/kubernetes.conf

2.10.4开启IPVS支持

vi /etc/sysconfig/modules/ipvs.modules

#!/bin/bash

ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"

for kernel_module in ${ipvs_modules}; do

/sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1

if [ $? -eq 0 ]; then

/sbin/modprobe ${kernel_module}

fi

done

:wq! #保存退出

#执行以下命令使配置生效

chmod 755 /etc/sysconfig/modules/ipvs.modules

sh /etc/sysconfig/modules/ipvs.modules

lsmod | grep ip_vs

reboot #重启系统

2.11 配置免密码登录

#配置从master节点免密码登录到node节点,方便后面从master节点拷贝文件到node节点时不用每次都输入密码。

免密码登录原理:

1、机器A生成密钥对并将公钥发给机器B,机器B将机器A发来的公钥保存

2、机器A要登录机器B时,机器B生成随机字符串并用机器A的公钥加密后,发给机器A

3、机器A用私钥将其解密后发回给机器B,验证成功后登录

在k8s-master1上操作

ssh-keygen #输入命令,按三次回车,会生成私钥和公钥

root@k8s-master1 ~# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:IoTwD/kKM5vLdgr4EYQPhQ/EaXIRCpEubkTAd9fZ2xk root@master01.k8s

The key's randomart image is:

+---[RSA 2048]----+

|X==o . o |

|*%.+ . . o . E |

|O+B o . o o |

|.*.= . o |

|B o + . S |

|.O o . . |

|* o |

|o+ o |

|oo+ |

+----[SHA256]-----+

cd /root/.ssh #进入目录,会看到生成的私钥和公钥

root@k8s-master1 ~# ll

total 12

-rw------- 1 root root 1675 Dec 9 12:20 id_rsa

-rw-r--r-- 1 root root 399 Dec 9 12:20 id_rsa.pub

#拷贝公钥

ssh-copy-id root@192.168.21.81 #输入192.168.21.81的root密码

ssh-copy-id root@192.168.21.82 #输入192.168.21.82的root密码

ssh-copy-id root@192.168.21.83 #输入192.168.21.83的root密码

在node节点的/root/.ssh目录会保存从master节点传来的公钥authorized_keys

后面在master节点直接输入ssh root@192.168.21.81登录服务器,不用再输密码。

至此,k8s集群搭建之服务器系统初始化设置完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2024 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3