首页 > 其他分享 >【二进制部署k8s-1.29.4】一、安装前软件准备及系统初始化

【二进制部署k8s-1.29.4】一、安装前软件准备及系统初始化

时间:2024-05-30 17:02:47浏览次数:25  
标签:初始化 ip sudo etc 1.29 conf net k8s

文章目录

简介

本章节主要讲解在安装部署k8s-1.29.4环境之前的一些软件、环境调优的准备工作,本篇采用k8s二进制安装的方式进行部署,该环境是根据在用的一个30节点左右的k8s集群部署流程进行文章整理。

一.资源及软件准备

1.1.机器资源信息

资源说明:列出其中一部分IP和资源,集群规模大概在30个节点左右,单台机的配置大概是24核192G,2T的盘。

角色ip主机名
master10.16.120.81pc-k8s-master-vm120-81
master10.16.120.82pc-k8s-master-vm120-82
master10.16.120.83pc-k8s-master-vm120-83
worker10.16.120.84pc-k8s-master-vm120-84
worker10.16.120.85pc-k8s-master-vm120-85
1.2.软件列表

软件版本说明,可以根据软件版本及指引提前将软件进行下载准备,将以下用到的软件下载在一个统一的目录下,并上传到master节点上去。

软件版本说明备注
系统unbutu-22.4内核:5.15https://www.kernel.org/
kubernetesv1.29.4https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md
etcdv3.5.13https://github.com/etcd-io/etcd/releases
containerdv1.7.16下载cri版的cri-containerd-1.7.16-linux-amd64.tar.gzhttps://github.com/containerd/containerd/releases/
ciliumv1.15.4https://github.com/cilium/cilium
ingressv1.10.1kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.1/deploy/static/provider/cloud/deploy.yaml
corednsv1.11.2coredns v1.11.2
metallbv0.14.5https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml
cfsslv1.6.1https://github.com/cloudflare/cfssl
helmv3.14.4https://github.com/helm/helm/releases/latest
1.2.网络规划

软件说明:

名称网段备注
apiserver-vip10.16.120.80
service网段10.1.0.0/16
pod网段10.2.0.0/16
coredns的service IP10.1.0.2
1.2.安装路径

软件说明:

名称路径备注
kubernetes/opt/kubernetes/{conf,bin,ssl,logs}
etcd/opt/etcd/{conf,bin,ssl,logs}
containerd/etc/containerd/config.toml

二.系统初始化环境

2.1.内核升级

内核升级说明:

当前内核:5.15.0-107-generic    
升级内核:6.6.30-060630.202405021537
cilium要求内核 Kernel >= 5.15

下载ubuntu-mainline-kernel脚本更新
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh

第一步:sudo ubuntu-mainline-kernel.sh -r 查看可用内核版本。
第二步:选择一个版本 :sudo ubuntu-mainline-kernel.sh -i v6.2.0
第三步:执行:sudo apt --fix-broken install
第四步:sudo reboot
第五步:查看当前系统内核:dpkg --list|egrep "linux-image|linux-header"
第六部:删除旧内核:sudo apt-get purge linux-image-5.4.0-42-generic

更新包:
第一步:检查系统更新 $ sudo apt update
第二步:列出需要更新的软件包 $ sudo apt list --upgradable
第三步:更新 $ sudo apt upgrade -y
第四部:sudo apt --fix-broken install
2.2.软件安装

软件安装说明:

sudo apt-get install wget vim net-tools jq telnet lvm2 git tar curl nfs-kernel-server chrony ipvsadm ipset sysstat conntrack -y

2.2.系统初始化

1.禁用防火墙

ufw disable
sudo ufw status

2.关闭swap

swapoff -a 
sed -ri 's/.*swap.*/#&/' /etc/fstab

3.设置时间同步,检查时区、设置成24小时制

timedatectl status
timedatectl set-timezone Asia/Shanghai

执行timedatectl status结果如下:
Local time: Thu 2024-05-09 18:30:02 CST
           Universal time: Thu 2024-05-09 10:30:02 UTC
                 RTC time: Thu 2024-05-09 10:30:02
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

4.修改dns,一行一条命令

echo "`date +%Y-%m-%dT%H:%M:%S` change dns"
sed -i 's#192.168.11.228#192.168.238.75#g' /etc/netplan/00-installer-config.yaml
netplan apply
sed -i 's#\#DNS=.*#DNS=192.168.238.75#' /etc/systemd/resolved.conf
systemctl restart systemd-resolved
systemctl enable systemd-resolved

5.先检查编码相关配置,没有的话,编辑/etc/default/locale并添加如下信息

LANG=en_US.UTF-8
LC_TIME=en_DK.UTF-8
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8

6.在/etc/hosts中配置主机名的映射

10.16.120.81 yt-pcauto-k8s.pc.com.cn #域名对应的是apiserver的vip,当配置好vip以后,改解析到正确的vip上
10.16.120.81 yt-pcauto-k8s-16-120-81
10.16.120.82 yt-pcauto-k8s-16-120-82
10.16.120.83 yt-pcauto-k8s-16-120-83
10.16.120.84 yt-pcauto-k8s-16-120-84

2.2.内核模块配置

配置一些需要的内核模块

一.
cat >> /etc/modules-load.d/ipvs.conf <<EOF
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF

二.
systemctl restart systemd-modules-load.service

三.
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

配置后执行:lsmod | grep -e ip_vs -e nf_conntrack 结果如下:

ip_vs_sh 16384 0
ip_vs_wrr 16384 0
ip_vs_rr 16384 0
ip_vs 155648 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack 139264 1 ip_vs
nf_defrag_ipv6 24576 2 nf_conntrack,ip_vs
nf_defrag_ipv4 16384 1 nf_conntrack
libcrc32c 16384 4 nf_conntrack,btrfs,raid456,ip_vs
2.3.内核参数优化

内核参数优化

cat <<EOF >> /etc/sysctl.conf
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_max_syn_backlog = 20480
net.core.somaxconn = 102400
net.core.netdev_max_backlog = 32768
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv6.conf.all.forwarding = 1
EOF

文件句柄调优

cat >> /etc/security/limits.conf <<EOF
* soft nofile 655350
* hard nofile 655350
* soft nproc 20480
* hard nproc 20480
EOF

sed -i 's#\#DefaultLimitNOFILE=.*#DefaultLimitNOFILE=1024000#' /etc/systemd/system.conf
sed -i 's#\#DefaultLimitNPROC=#DefaultLimitNPROC=1024000#' /etc/systemd/system.conf
sed -i 's#\#DefaultLimitCORE=#DefaultLimitCORE=infinity#' /etc/systemd/system.conf

标签:初始化,ip,sudo,etc,1.29,conf,net,k8s
From: https://blog.csdn.net/weixin_56364253/article/details/139328816

相关文章

  • Ubuntu22.04安装部署基于dockers的K8s目前最新版本1.30.1版本
    其实之前也写过其他系统、其他版本的部署,但是,由于在1.28版本之后,安装略有所变化,所以,这里再写一篇基础环境主机名配置角色系统版本IP安装的组件master4核4GmasterUbuntu22.04192.168.140.75apiserver、controller-manager、scheduler、kubelet、etcd、kube-pro......
  • k8s servicemonitor 采集超时配置
    背景说明我们有时候在编写exporter时,其中某个采集的metrics接口获取数据很慢,可能需要达到10~20S,基于此种情况,如果我们按照ServiceMonitor默认的配置进行,这里默认scrapeTimeout为10S,采集时会超时,对应Prometheus的Target会提示,servicemonitor对应的State状态为Down。这里我们需要修......
  • *Python中的`__init__`方法:类的初始化与魔法
    Python中的__init__方法:类的初始化与魔法在Python的面向对象编程中,__init__方法扮演着至关重要的角色。它被称为类的构造函数或初始化方法,当创建类的新实例时,会自动被调用。__init__方法允许开发者在创建对象时设置初始状态或执行其他必要的初始化操作。本文将深入解析__in......
  • 如何初始化 FIrebase 云函数,以便使用凭据和 JSON 验证 Firebase Admin SDK 服务账户?
    我觉得我已经阅读了所有可用的资料,但我仍然无法理解这一点。我非常喜欢Google的产品,但有时其文档的简洁性令人头疼。我阅读了这个令人难以置信的雄辩答案,这个答案的作者和我一样毫无头绪,但他觉得有必要写一本循序渐进的儿童指南。不幸的是,他的回答过于针对他的项目,而不是我的项......
  • k8s subpath解决加载配置覆盖原目录问题,configmap与secret热更新
    问题:传统上直接挂载会直接覆盖原目录问题还原挂载配置 重启容器挂了 进入容器查看文件不见了,只剩下挂载文件了,目录被覆盖了问题解决subpath:1、当挂载目录存在多个文件,不会覆盖所有文件;2、挂载单个文件而不是整个目录。修改配置subpath热更新问题:1.cm或secret以......
  • k8s:The connection to the server localhost:8080 was refused - did you specify the
    前言k8s集群node节点报错:Theconnectiontotheserverlocalhost:8080wasrefused-didyouspecifytherighthostorport?通过kubectlgetnodes查看集群的情况,出现了报错,内容如下:$kubectlgetpodE052902:28:59.776677415799memcache.go:265]couldn'tgetc......
  • K8S POD控制器:从基础到高级实战技巧
    本文深入探讨了KubernetesPOD控制器的基础知识、配置示例、最佳实践,并通过一个电子商务公司的案例分析,展示了如何在复杂的生产环境中应用POD控制器,以优化云服务架构。关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发......
  • 最详细的k8s中部署Jenkins教程+基于jenkins+k8s(container)实现CI/CD
    k8s中部署Jenkins系统环境:• kubernetes版本:1.23.3• jenkins版本:2.172• jenkins部署示例文件Github地址:https://github.com/my-dlq/blog-example/tree/master/jenkins-deploy一、设置存储目录在Kubenetes环境下所起的应用都是一个个Docker镜像,为了保证......
  • A申请共享内存并对信号量进行初始化,然后进程B与C实现互斥
    练习:设计一个程序,作为进程A,进程A专门创建一个信号量集,要求信号量集中有1个信号量,对信号量集合中的信号量进行设置,要求集合中的信号量的初值为1,然后再设计2个程序,分别是进程B和进程C,要求进程B和进程C使用进程A创建的信号量集合中的信号量实现互斥访问。提示:进程A、进程B、进......
  • 【JVM】——类的生命周期——连接阶段和初始化阶段
    【喜欢的话可以一键三连+关注哦~】你的三连+关注是对我最大的支持!之后也会继续更新本专栏呦~~连接阶段验证:验证内容是否满足《Java虚拟机规范》(这个阶段程序员一般不需要参与)准备:给静态变量(static)分配内存并设置初始值final修饰的基本数据类型的静态变量,准备阶段直接......