K8s

K8s 集群环境准备

Posted on 2024-01-12,5 min read

一键换源

bash <(curl -sSL https://linuxmirrors.cn/main.sh)

设置系统相关参数

# 1、修改 hostname
# master 节点
hostnamectl set-hostname k8s-master-01
# worker 节点
hostnamectl set-hostname k8s-node-01

# 2、设置时区
timedatectl set-timezone "Asia/Shanghai"
# 查看时区设置是否生效
timedatectl

# 3、设置 locale
localectl set-locale LANG=zh_CN.utf8
# 查看是否生效(注意需要退出 SSH 再重新登陆才能生效)
localectl

关闭 firewalld、selinux、swap

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭 selinux
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

# 关闭 swap
# 因为 k8s 的特点是速度快,运行在内存中来保持高速,而 swap 分区的速度慢,k8s 不允许这样,这就是为什么 k8s 对环境有严格的要求
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

配置内核参数

桥接的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 # 生效

时间同步

yum install ntpdate -y
ntpdate 10.213.120.3

echo "*/10 * * * * ntpdate 10.213.120.3"  #设置时间同步

修改 ulimit
为了防止出现 too open many files 错误,需要修改系统的 ulimit

vim /etc/security/limit.conf
* soft nofile 1000000
* hard nofile 1000000

重启所有服务器

安装 docker

卸载系统下已经存在的Docker和相关依赖项以避免安装失败

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine


安装最新版 Docker

安装软件包
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
# 设置仓库地址,从该仓库进行下载和更新
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo


# 安装过程中如果出现GPG密钥,请选择'y'
sudo yum install docker-ce docker-ce-cli containerd.io


安装指定版本 Docker

# 展示出仓库中所有可以使用的Docker版本
yum list docker-ce --showduplicates | sort -r
# 结果类似如下,其中第二列为版本号:
docker-ce.x86_64   3:19.03.6-3.el7   docker-ce-stable 
docker-ce.x86_64   3:19.03.5-3.el7   docker-ce-stable
docker-ce.x86_64   18.06.3.ce-3.el7  docker-ce-stable
# 获取指定版本的安装命令步骤如下:
# 1、假如此时需要安装的Docker的版本号为 3:19.03.6-3.el7
# 2、从第一个冒号截取到第一个中横线(如果没有冒号则从第一个字符开始)
# 3、得到19.03.6并运行命令
sudo yum install docker-ce-23.* docker-ce-cli-23.* containerd.io

设置开机自启,并启动docker

systemctl enable docker && systemctl start docker

查看docker版本

docker --version

修改docker默认路径

迁移/var/lib/docker目录下面的文件到 /home/docker

mkdir -p /home/docker
rsync -avz /var/lib/docker /home/docker #和cp类似,只不过是会自动过滤,目标目录有的文件不会重新拷贝

修改 /etc/docker/daemon.json文件

{
"data-root": "/home/docker",
"exec-opts": ["native.cgroupdriver=systemd"],
"live-restore": true,
"default-ulimits": {
    "nofile": {
        "Soft": 500000,
        "Hard": 500000,
        "Name": "nofile"
    }
  }
}

重启docker

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

docker info #查看默认路径师傅已经修改/home/docker

k8s 源配置
因为 k8s 的相关源都放在 google 的服务器上,除非翻墙,否则根本无法访问,因此必须配置 k8s 的源,使用 aliyun 的镜像:

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

安装 Kubernetes 系统依赖包

yum install curl socat conntrack ebtables ipset ipvsadm -y

# 安装其他必备包,openEuler 也是奇葩了,默认居然都不安装tar,不装的话后面会报错
yum install tar -y

下一篇: 一键测试Linux性能脚本→