kubeadm安装K8s集群之基础环境配置

ops/2024/12/14 3:12:44/

系列文章目录
1.kubeadm安装K8s集群之基础环境配置
2.kubeadm安装K8s集群之高可用组件keepalived+nginx
3.kubeadm安装K8s集群之master节点加入
4.kubeadm安装K8s集群之worker1节点加入

kubeadm安装K8s集群基础环境配置

    • 1.首先确保所有机器可以通信,然后配置主机hosts文件;
    • 2.关闭所有节点关闭防火墙、selinux、swap;
    • 3.将桥接的IPv4流量传递到 iptables;
    • 4.安装常用工具包;
    • 5.安装时间同步工具ntpdate,保证所有的机器时间同步,避免实际使用时产生数据相关的问题;
    • 6.设置limit修改内核参数/etc/security/limits.conf添加内容如下;
    • 7.master节点配置免密钥登录其他节点;
    • 8.升级系统;
    • 9.升级内核版本;
    • 10.安装ipvsadm及一些相关管理工具;
    • 11.配置k8s集群中必须的内核参数;
    • 12.安装docker;

机器配置清单

节点IP系统docker版本kubernetes版本安装软件
master1 – k8s01-m1192.168.0.105centos719.03.91.20.8-
master1 – k8s02-m2192.168.0.106centos719.03.91.20.8-
worker1 – k8s03-n1192.168.0.107centos719.03.91.20.8-
worker1 – k8s04-n2192.168.0.108centos719.03.91.20.8-

1.首先确保所有机器可以通信,然后配置主机hosts文件;

vim /etc/hosts192.168.0.105 k8s01-m1
192.168.0.106 k8s02-m2
192.168.0.107 k8s03-n1
192.168.0.108 k8s04-n2

2.关闭所有节点关闭防火墙、selinux、swap;

  • 关闭防火墙
systemctl disable --now firewalld
systemctl disable --now NetworkManager
  • selinux设置disable;
vim /etc/sysconfig/selinuxSELINUX=disable

在这里插入图片描述

  • 关闭禁用swap,编辑文件/etc/fstab注释掉swap一行;
vim /etc/fstab
swapoff -a &&  sysctl -w vm.swappiness=0

在这里插入图片描述

3.将桥接的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 

4.安装常用工具包;

yum -y install wget psmisc vim net-tools  telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl

5.安装时间同步工具ntpdate,保证所有的机器时间同步,避免实际使用时产生数据相关的问题;

yum install -y ntpdate

设置时间5分钟自动同步,加入定时任务当中

crontab -e

插入以下内容:

*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com > /dev/null 2>&1

在这里插入图片描述

6.设置limit修改内核参数/etc/security/limits.conf添加内容如下;

cat >> /etc/security/limits.conf <<EOF
* soft nofile 65535
* hard nofile 65535
* soft noproc 65535
* hard noproc 65535
* soft memlock unlimited
* hard memlock unlimited
EOF

在这里插入图片描述

7.master节点配置免密钥登录其他节点;

ssh-keygen -t rsa

系统会提示您输入一个密码短语。如果希望完全免密钥登录,直接按回车跳过此步骤。否则,输入并确认密码短语;然后将将生成的key导入到其他节点;

ssh-copy-id root@k8s01-m1
ssh-copy-id root@k8s01-m2
ssh-copy-id root@k8s01-n1
ssh-copy-id root@k8s01-n2

运行此命令后,系统会提示您输入远程用户的密码。成功输入密码后,公钥将被复制到远程服务器的 ~/.ssh/authorized_keys 文件中。

在这里插入图片描述

8.升级系统;

#排除内核
yum update -y --exclude=kernel* && reboot

9.升级内核版本;

查找 kernel rpm 历史版本:http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/

  • 获取安装包,我这里用的是4.4.6
wget http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-devel-4.4.6-1.el7.elrepo.x86_64.rpm
wget http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-4.4.6-1.el7.elrepo.x86_64.rpm
  • 安装内核包
yum  -y localinstall kernel*

在这里插入图片描述

  • 查看已安装的内核版本;
#查看已安装的内核版本
rpm -qa | grep kernel
#查看启动顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
  • 将安装的内核版本设置为默认使用;
#设置启动顺序并重启
grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg
#查看默认内核
grubby --default-kernel
reboot
  • 重启后查看内核版本
uname -r

10.安装ipvsadm及一些相关管理工具;

yum -y install ipvsadm ipset sysstat conntrack libseccomp
  • 内核配置ipvs模块
cat > /etc/modules-load.d/ipvs.conf << EOF
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
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF
  • 加载配置
#执行命令启动服务,注意上一步升级内核如果没重启此处会不成功
systemctl enable --now systemd-modules-load.service && reboot
#重启系统后查看是否加载
lsmod | grep -e ip_vs -e nf_conntrack

11.配置k8s集群中必须的内核参数;

cat >> /etc/sysctl.d/k8s.conf <<EOF
net.ipv4.ip_forward =1
fs.may_detach_mounts = 1
vm.overcommit_memory = 1
vm.panic_on.oom = 0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open = 52706963
net.netfilter.nf_conntrack_max = 2310720
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 327680
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_contrack_max = 65536
net.ipv4.tcp_timestamps = 0
net.core.somaxconn = 16384
EOF
  • 加载配置重启后查看
sysctl --system && reboot
#配置完成后,重启服务器,查看内核加载情况
lsmod | grep --color=auto -e ip_vs -e nf_conntrack

12.安装docker;

  • 配置阿里docker源
cat >> /etc/yum.repos.d/docker-ce.repo << 'EOF'
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
  • 更新yum缓存
yum makecache fast
  • 列出docker ce版本
sudo yum list docker-ce --showduplicates | sort -r
  • 安装指定版本的docker
sudo yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io
docker -v
systemctl start docker #--启动docker服务
systemctl enable docker  #--开机自启
systemctl status docker
  • 配置daemon.json
cat > /etc/docker/daemon.json << EOF
{"exec-opts": ["native.cgroupdriver=systemd"],"max-concurrent-downloads": 10,"max-concurrent-uploads": 5,"log-driver": "json-file","storage-driver": "overlay2","data-root": "/data/docker","storage-opts": ["overlay2.override_kernel_check=true"],"log-opts":{"max-size": "300m","max-file": "2" },"live-restore": true
}
EOF
  • 加载配置并启动
systemctl daemon-reload
systemctl start docker
systemctl enable docker

http://www.ppmy.cn/ops/141699.html

相关文章

在Ubuntu 22.04上搭建Kubernetes集群

Kubernetes 简介 什么是 Kubernetes&#xff1f; Kubernetes&#xff08;常简称为 K8s&#xff09;是一个强大的开源平台&#xff0c;用于管理容器化应用程序的部署、扩展和运行。它最初由 Google 设计并捐赠给 Cloud Native Computing Foundation&#xff08;CNCF&#xff0…

基于Dockerfile的博客管理系统的容器化部署

目录 任务描述 3 1.1课题的基本内容 3 1.2 项目整体技术架构 3 1.3主要技术栈&#xff1a; 3 1.4 模块划分 4 1.5 容器集群化部署的任务内容 5 1.6 项目容器化部署的目的 6总体结构 7 2.1 容器角色和功能 7 2.2 容器之间的关联关系 8 2.3 数据流动示例 8 3.详细设计 9 3.1 设计…

CLIP论文提炼与代码实战

今天和大家分享一篇多模态的经典论文&#xff0c;大名鼎鼎的CLIP&#xff1a;Learning Transferable Visual Models From Natural Language Supervision[pdf] 文章目录 一、论文提炼二、论文疑问三、代码演示CodeDemo 一、论文提炼 Source&#xff08;来源&#xff09;: ICML2…

VS2019 + Linux 跨平台开发中的 sqlite3 数据库环境配置

Visual Studio 2019 + Linux 跨平台开发中的 sqlite3 数据库环境配置 参考文章链接:Sqlite3环境配置(Windows和Linux) 源码资源下载:SQLite Download Page把源码.tar.gz包复制到Ubuntu下(/opt/Sqlite3/),并新建一个文件夹(/root/sqlite3_build)作为等会配置输出的文件…

力扣题目 - 2931.购买物品的最大开销

题目 还需要你前往力扣官网查看详细的题目要求 地址 思路 这边需要你去力扣官网详细查看题目看了题目提供的示例 已经有了解法, 先把values转成1维数组,排序之后进行累加即可 代码 var maxSpending function (values) {let list values.flat();list.sort((a, b) > a - …

JAVA数据结构

1.数组 (Array): 固定大小的容器,用于存储相同类型的元素,数组在内存中是连续存储的,支持通过索引快 速访问元素。 int[] numbers = new int[10]; numbers[0] = 1;2.Java Collections Framework (JCF) JCF提供了一组接口和类用于管理和操作集合(如列表,集合,…

Docker 学习总结(84)—— Docker 常用运维命令

版本与信息查询 docker --version:查看安装的Docker版本。 docker info:获取Docker系统的详细配置信息。 镜像管理 docker images:列出本地所有镜像。 docker search IMAGE_NAME:搜索Docker Hub上的镜像。 docker pull IMAGE_NAME[:TAG]:从仓库下载指定镜像。 docker rmi …

网络知识:IP数据报知识详解

目录 一、IP数据报概念 二、IPV4数据报报头组成 三、IPV6数据报报头组成 今天给大家分享IP数据库相关的知识,希望对大家进一步了解IP协议提供一些帮助! 一、IP数据报概念 TCP/IP协议的网际层接收到传输层传递过来的数据单元,封装成向下(OSI模型的数据链路层、TCP/IP协…