2024.9.4(k8s)

news2024/11/15 16:50:23

一、前期准备

1、配置主机映射

[root@k8s-master ~]# vim /etc/hosts

192.168.8.168   k8s-master
192.168.8.176   k8s-node1
192.168.8.177   k8s-node2

[root@k8s-master ~]# ping k8s-master

2、配置yum源

[root@k8s-master yum.repos.d]# vim kubernetes.repo

[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/rpmpackage-key.gpg

[root@k8s-master yum.repos.d]# vim docker-ce.repo 

[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-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/stable
enabled=0
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-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/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

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
3、安装必备工具

[root@k8s-master yum.repos.d]# yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent lvm2 git -y

4、时间同步

[root@k8s-master yum.repos.d]# yum -y install ntpdate

[root@k8s-master yum.repos.d]# ntpdate time2.aliyun.com

[root@k8s-master yum.repos.d]# crontab -e

* 5 * * * /usr/sbin/ntpdate time2.aliyun.com
5、配置limit

[root@k8s-master yum.repos.d]# ulimit -SHn 65535    //单个进程可以打开的⽂件数量将被限制为 65535

[root@k8s-master yum.repos.d]# vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072
* soft nproc 65535
* hard nproc 655350
* soft memlock unlimited
* hard memlock unlimited
6、安装k8s高可用git仓库

[root@k8s-master ~]# cd /root/ ; git clone https://gitee.com/dukuan/k8s-ha-install.git

[root@k8s-master ~]#  yum update -y -- exclude=kernel* --nobest && reboot

二、配置内核模块

1、配置ipvs模块

[root@k8s-master ~]# yum install ipvsadm ipset sysstat conntrack libseccomp -y

[root@k8s-master ~]# modprobe -- ip_vs
[root@k8s-master ~]# modprobe -- ip_vs_rr
[root@k8s-master ~]# modprobe -- ip_vs_wrr
[root@k8s-master ~]# modprobe -- ip_vs_sh
[root@k8s-master ~]# modprobe -- nf_conntrack

[root@k8s-master ~]# vim /etc/modulesload.d/ipvs.conf

# 在系统启动时加载下列 IPVS 和相关功能所需的模块
ip_vs					# 负载均衡模块
ip_vs_lc			# 用于实现基于连接数量的负载均衡算法
ip_vs_wlc			# 用于实现带权重的最少连接算法的模块
ip_vs_rr			# 负载均衡rr算法模块
ip_vs_wrr			# 负载均衡wrr算法模块
ip_vs_lblc		# 负载均衡算法,它结合了最少连接(LC)算法和基于偏置的轮询(Round Robin with Bias)算法
ip_vs_lblcr		# 用于实现基于链路层拥塞状况的最少连接负载调度算法的模块
ip_vs_dh			# 用于实现基于散列(Hashing)的负载均衡算法的模块
ip_vs_sh			# 用于源端负载均衡的模块
ip_vs_fo			# 用于实现基于本地服务的负载均衡算法的模块
ip_vs_nq			# 用于实现NQ算法的模块
ip_vs_sed			# 用于实现随机早期检测(Random Early Detection)算法的模块
ip_vs_ftp			# 用于实现FTP服务的负载均衡模块
ip_vs_sh
nf_conntrack	# 用于跟踪网络连接的状态的模块
ip_tables			# 用于管理防护墙的机制
ip_set				# 用于创建和管理IP集合的模块
xt_set				# 用于处理IP数据包集合的模块,提供了与iptables等网络工具的接口
ipt_set				# 用于处理iptables规则集合的模块
ipt_rpfilter	# 用于实现路由反向路径过滤的模块
ipt_REJECT		# iptables模块之一,用于将不符合规则的数据包拒绝,并返回特定的错误码
ipip					# 用于实现IP隧道功能的模块,使得数据可以在两个网络之间进行传输
2、k8s内核模块

[root@k8s-master ~]# yum -y install kubernetes

[root@k8s-master ~]# vim /etc/sysctl.d/k8s.conf

# 写⼊k8s所需内核模块
net.bridge.bridge-nf-call-iptables = 1 # 控制⽹络桥接与iptables之间的⽹络转发⾏为
net.bridge.bridge-nf-call-ip6tables = 1 # ⽤于控制⽹络桥接(bridge)的IP6tables过滤规则。当该参数设置为1时,表示启⽤对⽹络桥接的IP6tables过滤规则
fs.may_detach_mounts = 1 # ⽤于控制⽂件系统是否允许分离挂载,1表示允许
net.ipv4.conf.all.route_localnet = 1 # 允许本地⽹络上的路由。设置为1表示允许,设置为0表示禁⽌。
vm.overcommit_memory=1 # 控制内存分配策略。设置为1表示允许内存过量分配,设置为0表示不允许。
vm.panic_on_oom=0 # 决定当系统遇到内存不⾜(OOM)时是否产⽣panic。设置为0表示不产⽣panic,设置为1表示产⽣panic。
fs.inotify.max_user_watches=89100 # inotify可以监视的⽂件和⽬录的最⼤数量。
fs.file-max=52706963 # 系统级别的⽂件描述符的最⼤数量。
fs.nr_open=52706963 # 单个进程可以打开的⽂件描述符的最⼤数量。
net.netfilter.nf_conntrack_max=2310720 # ⽹络连接跟踪表的最⼤⼤⼩。
net.ipv4.tcp_keepalive_time = 600 # TCP保活机制发送探测包的间隔时间(秒)。
net.ipv4.tcp_keepalive_probes = 3 # TCP保活机制发送探测包的最⼤次数。
net.ipv4.tcp_keepalive_intvl =15 # TCP保活机制在发送下⼀个探测包之前等待响应的时间(秒)。
net.ipv4.tcp_max_tw_buckets = 36000 # TCP TIME_WAIT状态的bucket数量。
net.ipv4.tcp_tw_reuse = 1 # 允许重⽤TIME_WAIT套接字。设置为1表示允许,设置为0表示不允许。
net.ipv4.tcp_max_orphans = 327680 # 系统中最⼤的孤套接字数量。
net.ipv4.tcp_orphan_retries = 3 # 系统尝试重新分配孤套接字的次数。
net.ipv4.tcp_syncookies = 1 # ⽤于防⽌SYN洪⽔攻击。设置为1表示启⽤SYN cookies,设置为0表示禁⽤。
net.ipv4.tcp_max_syn_backlog = 16384 # SYN连接请求队列的最⼤⻓度。
net.ipv4.ip_conntrack_max = 65536 # IP连接跟踪表的最⼤⼤⼩。
net.ipv4.tcp_max_syn_backlog = 16384 # 系统中最⼤的监听队列的⻓度。net.ipv4.tcp_timestamps = 0 # ⽤于关闭TCP时间戳选项。
net.core.somaxconn = 16384 # ⽤于设置系统中最⼤的监听队列的⻓度

三、基本组件安装

1、安装docker

[root@k8s-master ~]# yum remove -y podman runc containerd   //卸载旧版本
[root@k8s-master ~]# yum install containerd.io -y

[root@k8s-master ~]# yum list installed | grep docker

[root@k8s-master ~]# yum list | grep docker-ce

[root@k8s-master ~]# yum -y remove docker
[root@k8s-master ~]# yum install docker-ce docker-ce-cli -y

2、配置 Containerd 所需模块

[root@k8s-master ~]# cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
> overlay
> br_netfilter
> EOF
overlay
br_netfilter
[root@k8s-master ~]# modprobe -- overlay
[root@k8s-master ~]# modprobe -- br_netfilter

3、配置 Containerd 所需内核

[root@k8s-master ~]# vim /etc/sysctl.d/99-kubernetes-cri.conf

 net.bridge.bridge-nf-call-iptables  = 1 # ⽤于控制⽹络桥接是否调⽤iptables进⾏包过滤和转发。
 net.ipv4.ip_forward                 = 1 # 路由转发,1为开启
 net.bridge.bridge-nf-call-ip6tables = 1 # 控制是否在桥接接⼝上调⽤IPv6的iptables进⾏数据包过滤和转发。

[root@k8s-master ~]# sysctl --system

4、Containerd 配置⽂件

[root@k8s-master ~]# mkdir -p /etc/containerd
[root@k8s-master ~]# containerd config default | tee /etc/containerd/config.toml

[root@k8s-master ~]# vim /etc/containerd/config.toml 

128             sandbox_image = "registry.cn-hangzhou.aliyuncs.co    m/google_containers/pause:3.9"

[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl start containerd.service 
[root@k8s-master ~]# systemctl enable containerd.service 

5、配置crictl客户端连接的运行方式

[root@k8s-master ~]# vim /etc/crictl.yaml

 runtime-endpoint: unix:///run/containerd/containerd.sock
 image-endpoint: unix:///run/containerd/containerd.sock
 timeout: 10 
 debug: false  
6、安装kubernetes组件

[root@k8s-master ~]# yum list kubeadm.x86_64 -- showduplicates | sort -r

[root@k8s-master ~]# yum install kubeadm-1.28* kubelet-1.28* kubectl-1.28* -y

Transaction check error:
  file /usr/bin/kubectl from install of kubectl-1.28.2-0.x86_64 conflicts with file from package kubernetes-client-1.5.2-0.7.git269f928.el7.x86_64

错误概要
-------------

[root@k8s-master ~]# systemctl start kubelet.service
[root@k8s-master ~]# systemctl enable kubelet.service

[root@k8s-master ~]# yum -y remove kubernetes-client-1.5.2-0.7.git269f928.el7.x86_64
[root@k8s-master ~]# yum install kubeadm-1.28*  kubectl-1.28* -y

7、Kubernetes 集群初始化
1. Kubeadm 配置⽂件

[root@k8s-master ~]# vim kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta3              # 指定Kubernetes配置文件的版本,使用的是kubeadm API的v1beta3版本
bootstrapTokens:                # 定义bootstrap tokens的信息。这些tokens用于在Kubernetes集群初始化过程中进行身份验证
- groups:               # 定义了与此token关联的组
  - system:bootstrappers:kubeadm:default-node-token 
  token: 7t2weq.bjbawausm0jaxury                # bootstrap token的值
  ttl: 24h0m0s          # token的生存时间,这里设置为24小时
  usages:                       # 定义token的用途
  - signing             # 数字签名
  - authentication              # 身份验证
kind: InitConfiguration         # 指定配置对象的类型,InitConfiguration:表示这是一个初始化配置
localAPIEndpoint:               # 定义本地API端点的地址和端口
  advertiseAddress: 192.168.15.11
  bindPort: 6443
nodeRegistration:               # 定义节点注册时的配置
  criSocket: unix:///var/run/containerd/containerd.sock         # 容器运行时(CRI)的套接字路径
  name: k8s-master              # 节点的名称
  taints:               # 标记
  - effect: NoSchedule          # 免调度节点
    key: node-role.kubernetes.io/control-plane          # 该节点为控制节点
---
apiServer:              # 定义了API服务器的配置
  certSANs:             # 为API服务器指定了附加的证书主体名称(SAN),指定IP即可
  - 192.168.15.11
  timeoutForControlPlane: 4m0s          # 控制平面的超时时间,这里设置为4分钟
apiVersion: kubeadm.k8s.io/v1beta3              # 指定API Server版本
certificatesDir: /etc/kubernetes/pki    # 指定了证书的存储目录
clusterName: kubernetes         # 定义了集群的名称为"kubernetes"
controlPlaneEndpoint: 192.168.15.11:6443                # 定义了控制节点的地址和端口
controllerManager: {}           # 控制器管理器的配置,为空表示使用默认配置
etcd:           # 定义了etcd的配置
  local:                # 本地etcd实例
    dataDir: /var/lib/etcd              # 数据目录
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers            # 指定了Kubernetes使用的镜像仓库的地址,阿里云的镜像仓库。
kind: ClusterConfiguration              # 指定了配置对象的类型,ClusterConfiguration:表示这是一个集群配置
kubernetesVersion: v1.28.2              # 指定了kubernetes的版本
networking:             # 定义了kubernetes集群网络设置
  dnsDomain: cluster.local              # 定义了集群的DNS域为:cluster.local
  podSubnet: 172.16.0.0/16              # 定义了Pod的子网
  serviceSubnet: 10.96.0.0/16   # 定义了服务的子网
scheduler: {}           # 使用默认的调度器行为
2. 下载组件镜像

[root@k8s-master ~]# kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml
[root@k8s-master ~]# ls

[root@k8s-master ~]# kubeadm config images pull --config /root/new.yaml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2104872.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能医学(二)——MDPI特刊推荐

特刊征稿 01 特刊名称&#xff1a; eHealth and mHealth: Challenges and Prospects, 2nd Volume 参与期刊&#xff1a; 截止时间&#xff1a; 摘要提交截止日期 关闭(2024年6月30日) 投稿截止日期 2024年9月30日 目标及范围&#xff1a; 关键字 l 人工智能 l 计算机…

模拟实现string类及体验传统深拷贝

目录 strcpy 构造函数 优化 拷贝构造/深拷贝 operator size/operator[] operator<< c_str() 模拟string::iterator 插入 push_back() append() operator reserve npos strcpy strcpy是将/0拷贝完成后才会停止。 构造函数 string():_str(nullptr) {} st…

vite 打包 学习

plugins.jsimport vue from "vitejs/plugin-vue"; // 自动引入插件 import autoImport from "unplugin-auto-import/vite"; import setupExtend from "unplugin-vue-setup-extend-plus/vite"; import { ElementPlusResolver } from unplugin-vue…

国内Etsy开店注册账号需要什么?

Etsy作为海外知名二手电商平台&#xff0c;对于原创手工产品的商家来说具有巨大的市场流量与商机&#xff0c;但注册Etsy账号对于国内跨境电商用户来说确实存在一定的难度&#xff0c;作为Etsy也是小有名气的小商家&#xff0c;今天也分享一下开店的经验帮助大家出海。 一、Ets…

终端安全一体化解决方案有哪些?值得收藏的五款终端安全系统

随着信息技术的迅猛发展&#xff0c;企业和个人面临着越来越多的安全威胁。终端作为连接互联网和用户的第一线&#xff0c;其安全性直接影响到整个网络乃至组织的安全态势。为了应对日益复杂的网络环境&#xff0c;许多企业开始采用终端安全一体化解决方案&#xff0c;以期达到…

EVPN学习

三、VXLAN BGP EVPN基本原理_vxlan的type2,type3区别-CSDN博客 华为数通笔记VXLAN&BGP EVPN_vxlan为什么用bgp协议-CSDN博客

【MeterSphere】vnc连接不上selenium-chrome容器

目录 一、现象 二、查看配置文件 docker-compose-seleniarm.yml 三、处理 3.1 删除上图当中的三行 3.2 msctl reload 3.3 重新连接 前言:使用vnc连不上ms的selenium-chrome容器,看不到里面运行情况,以前其实可以,后来不行了,研究了一下 一、现象 输入IP:端口,连…

vmware 17.6 pro for personal USE初体验

新学期开学了&#xff0c;暑假期间把台式机放在办公室远程&#xff0c;无赖期间经常断电&#xff0c;把我的老台给烧坏了&#xff0c;检测了下固态硬盘和机械硬盘&#xff0c;好歹能用。但是win11的系统奔溃了。就花了半天时间重装。*v* 悲剧的是&#xff0c;一些软件环境必须…

怎么合并pdf文件?6个PDF文件合并成一个,只需要这5步!

在日常工作和学习中&#xff0c;我们经常需要处理多个PDF文件&#xff0c;有时为了方便查阅和管理&#xff0c;需要将它们合并成一个文件。以下是几种实用的方法来合并PDF文件&#xff0c;特别是如何将6个PDF文件合并成一个。 PDF合并工具推荐1. 金舟PDF编辑器 第一步、从金舟…

php民宿短租平台Java民宿预约系统python民宿预订住宿与可视化分析系统(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

【C++ 第十八章】C++11 新增语法(4)

前情回顾&#xff1a; 【C11 新增语法&#xff08;1&#xff09;&#xff1a;1~6 点】 C11出现与历史、花括号统一初始化、initializer_list初始化列表、 auto、decltype、nullptr、STL的一些新变化 【C11 新增语法&#xff08;2&#xff09;&#xff1a;7~8 点】 右值引用和…

爬虫练习(js逆向解密)

目标 网站地址交易列表 - 福建省公共资源交易电子公共服务平台 (fj.gov.cn) 抓取内容如下&#xff1a; 分析 查找js代码 点击下一页翻页的时候&#xff0c;查看请求返回的数据&#xff0c;发现data数据是经过加密后得到的 通过全局搜索data,发现有两千多个结果&#xff0c;一个…

Qt将数据库中的数据导出为html

一、源码分享 bool ReportFormUtils::exportReportHtml(QString &errString, const QString tableName, const QString savePathAndName, const QString tableTitle, const QString tableInfo) {Q_UNUSED(errString)Q_UNUSED(tableName)Q_UNUSED(savePathAndName)#define …

原子放大1亿倍能看到另一个宇宙?微观与宏观是一体的?

原子的行星模型 开始阐述前,先从物质 组成与体积 方面进行一些铺垫与解释:我们身处于物质的世界,大部分物质由分子构成,分子由原子构成,原子由电子、质子、中子构成,质子,中子又是由夸克构成。鉴于人类目前的科技,或许未来也可以知道电子的组成是否有更加微观的存在…

kubernetes中的资源管理

目录 1 资源管理介绍 2 资源管理的方式 2.1 kubectl命令介绍及格式 2.2 资源类型 2.3 kubectl 常见操作指令 2.3.1 CREATE 示例&#xff1a; 2.3.1.1 指定资源类型创建 2.3.1.2 查看创建的资源类型 2.3.1.3 查看pods是否正确被创建并且被调度 2.3.1.4 查看名为shuyan 的 Dep…

Flutter基本组件Text使用

Text是一个文本显示控件&#xff0c;用于在应用程序界面中显示单行或多行文本内容。 Text简单Demo import package:flutter/material.dart;class MyTextDemo extends StatelessWidget {const MyTextDemo({super.key});overrideWidget build(BuildContext context) {return Sca…

我写了个ffmpeg-spring-boot-starter 使得Java能剪辑视频!!

最近工作中在使用FFmpeg&#xff0c;加上之前写过较多的SpringBoot的Starter&#xff0c;所以干脆再写一个FFmpeg的Starter出来给大家使用。 首先我们来了解一下FFmpeg能干什么&#xff0c;FFmpeg 是一个强大的命令行工具和库集合&#xff0c;用于处理多媒体数据。它可以用来做…

【redis】redis编译和redis.conf配置

下载源码 reids 解压编译 # 解压 tar -zxvf redis-5.0.14.tar.gz cd redis-5.0.14/ make PREFIX/opt/redis install# requirepass root # 开启远程访问 bind 0.0.0.0 protected-mode no # 修改日志打印路径&#xff0c;修改redis.conf daemonize yes logfile /var/log/redis.…

[深度学习][LLM]:浮点数怎么表示,什么是混合精度训练?

混合精度训练 混合精度训练1. 浮点表示法&#xff1a;[IEEE](https://zh.wikipedia.org/wiki/电气电子工程师协会)二进制浮点数算术标准&#xff08;IEEE 754&#xff09;1.1 浮点数剖析1.2 举例说明例子 1:例子 2: 1.3 浮点数比较1.4 浮点数的舍入 2. 混合精度训练2.1 为什么需…

网络编程day01(IP地址、Socket、端口号)

目录 【1】IP地址 1》基本概念 IP地址 NAT设备&#xff08;网络地址转换&#xff09; DHCP服务器&#xff08;动态主机配置协议&#xff09; 2》网络号/主机号&#xff08;二级划分&#xff09; 3》IP地址分类 特殊地址 4》子网掩码 5》三级划分 【2】socket 1》socke…