K8S介绍及Kubeadm方式安装K8S(前期工作)

news2024/9/23 3:20:49

1.K8S介绍

1.Kubernetes简介

Kubernetes 缩写:K8S,k 和 s 之间有八个字符,所以因此得名。

Kubernetes 由 google 的 Brog 系统作为原型,后经 Go 语言延用 Brog 的思路重写,并捐献给 CNCF 基金会开源。

Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。

官⽹:https://kubernetes.io

Github:https://github.com/kubernetes/kubernetes

2.Kubernetes功能

Kubernetes 的目标是让部署容器化的应用简单并且高效,提供了应用部署,规划,更新,维护的一种机制。

Kubernetes 在 Docker 等容器技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

主要功能:

1. 使用Docker 等容器技术对应用程序包装(package)、实例化 (instantiate) 、运行(run)。

2. 以集群的方式运行、管理跨机器的容器,解决 Docker 跨机器容器之间的通讯问题。

3. K8S 的自我修复机制使得容器集群总是运行在用户期望的状态。

3.Kubernetes 架构

K8S 属于主从设备模型(Mater-Slave 架构),由 Master 节点负责 集群的调度、管理和运维(分配活的),Slave 节点是运算工作负载节点(干活的),被称为 Worker Node 节点。

Master 需要占据一个独立服务器运行,因为其是整个集群的“大脑”,一旦宕机或不可用,那么所有控制命令都将失效,可对主节点进进行可用配置。

当 Worker Node 节点宕机时,其上的工作负载会被 Master 自动转移到其他节点上。

 4.Kubernetes 工作流程

1. 运维⼈员使用kubectl 命令工具向 API Server 发送请求,API Server 接收请求后写入到 Etcd 中。

2. API Server 让 Controller-manager 按照预设模板去创建 Pod。

3. Controller-manager 通过 API Server 读取 Etcd 中用户的预设信息,再通过 API Server 找到 Scheduler,为新创建的 Pod 选择最合适的 Node 工作负载节点。

4. Scheduler 通过 API Server 在 Etcd 找到存储的 Node 节点元信息、剩余资源等,用预选和优选策略选择最优的 Node 节点。

5. Scheduler 确定 Node 节点后,通过 API Server 交给这个 Node 节点上的 Kubelet 进行 Pod 资源的创建。

6. Kubelet 调用容器引擎交互创建 Pod,同时将 Pod 监控信息通过 API Server 存储到 Etcd 中。

7. 当⽤户访问时,通过 Kube-proxy 负载、转发,访问相应的Pod。

8. 注:决定创建 Pod 清单的是 Controller-manager 控制器,Kubelet 和容器引擎只是干活的。

2.Kubeadm方式安装K8S

1.安装环境

创建三台主机,一台master,两台node,设置三台主机的基础配置(名称,ip地址,关闭防火墙,停用NetworkMansger,selinux)。

主机名ip地址角色
k8s_master192.168.1.11master节点
k8s_node01192.168.1.22work节点
k8s_node02192.168.1.33work节点

2.前期准备

---master主机

1.配置主机映射

在etc/hosts挟持域名

[root@k8s_master ~]# vim /etc/hosts

2.在/etc/yum.repos.d/添加2个新的rope文件

[root@k8s_master ~]# cd  /etc/yum.repos.d/

kubernetes

​
[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

​

 docker

[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

清除缓存创建缓存

[root@k8s_master yum.repos.d]# yum clean all && yum makecache

 3.安装常用工具

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

4. 同步时间

安装 ntpdate

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

 同步时间

[root@k8s_master yum.repos.d]# ntpdate time2.aliyun.com
 4 Sep 10:07:38 ntpdate[2527]: adjust time server 203.107.6.88 offset 0.009177 sec

编写计划任务

[root@k8s_master yum.repos.d]# crontab -e
* 5 * * * /usr/sbin/ntpdate time2.aliyun.com
~   

5.配置limit

单个进程可以打开的文件数量将被限制为 65535

[root@k8s_master yum.repos.d]# ulimit -SHn 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

centos文件的最高访问数量是1024

6.安装 k8s 高可用性 Git 仓库

[root@k8s_master yum.repos.d]# cd
[root@k8s_master ~]# git clone https://gitee.com/dukuan/k8s-ha-install.git
正克隆到 'k8s-ha-install'...
remote: Enumerating objects: 920, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 920 (delta 1), reused 0 (delta 0), pack-reused 912
接收对象中: 100% (920/920), 19.74 MiB | 2.93 MiB/s, done.
处理 delta 中: 100% (388/388), done.

7.重启 

[root@k8s_master k8s-ha-install]# reboot

3.配置内核模块

1.配置ipvs模块

安装lvs 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 ~]# find / -name "ipvs.conf"
[root@k8s_master ~]# vim /etc/modules-load.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 ~]# 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		# 用于设置系统中最大的监听队列的长度

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

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

相关文章

ts函数的参数加一个_是什么意思

先说一下总结,在TypeScript(TS)和Vue 3项目中,给函数的参数加一个下划线(_)前缀通常是一种约定或习惯,用来表示该参数在当前函数体内是故意未使用的,需要注意的是,这种做…

电脑开机出现no operation system found错误原因分析及解决方法

最近有网友问我电脑一启动提示:no operation system found,这个提示意思是未找到操作系统。并且出现bios能认别硬盘,快捷启动时找不到硬盘,出现该提示的原因有很多,下面我们来详细分析一下开机出现no operation system…

我的世界桃花源官网源码 游戏官网

我的世界桃花源官网源码 游戏官网 源码下载:https://download.csdn.net/download/m0_66047725/89714345 更多资源下载:关注我。

【python因果推断库6】使用 pymc 模型的工具变量建模 (IV)1

目录 使用 pymc 模型的工具变量建模 (IV) 使用 pymc 模型的工具变量建模 (IV) 这份笔记展示了一个使用工具变量模型(Instrumental Variable, IV)的例子。我们将会遵循 Acemoglu, Johnson 和 Robinson (2001) 的一个案例研究,该研究尝试解开…

MemLong: 长文本的新记忆大师,可将上下文长度从4k提升到80k!

这篇文章介绍了一个名为MemLong的模型,它通过使用外部检索器来增强长文本建模的能力。MemLong结合了一个不可微的检索-记忆模块和一个部分可训练的解码器-仅语言模型,并引入了一种细粒度、可控的检索注意力机制,利用语义级别的相关块。在多个…

SpringBoot后端快速搭建

SpringBoot 开发环境构建 首先创建一个maven项目 在pom.xml文件中添加以下依赖 <!-- 依赖的父级工程 --> < parent > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-parent</ artifactId > &l…

本地Gitblit使用

首先创建一个本地的gitblit的服务&#xff0c;创建流程如下&#xff1a; 【GitBlit】Windows搭建Git服务器详细教程_搭建gitblit服务-CSDN博客 GitBlit的使用教程-CSDN博客 创建好一个仓库后&#xff0c;分配好用户权限&#xff0c;再将项目拉下来&#xff0c;这里是再visua…

第二证券:什么是券商理财,券商理财有风险吗?

券商理财是指证券公司发行的理财产品&#xff0c;证券公司简称为券商&#xff0c;证券公司集结出资者资产主张建立的资产处理升值类产品便是券商理财产品。 券商理财产品中主要有质押式报价回购事务、收益凭证、券商资产处理计划三种。 1、质押式报价回购事务 是证券公司将契…

云计算和传统IT相比,有哪些优势?

云计算相比于传统的IT基础设施&#xff0c;具有以下一些显著的优势&#xff1a; 成本效益&#xff1a; 云计算通常采用按需付费模式&#xff0c;用户只需为实际使用的资源支付费用&#xff0c;避免了高昂的前期硬件投资和维护成本。 弹性计费方式使得企业可以根据业务需求灵活调…

如何做好API安全

在数字化时代&#xff0c;API&#xff08;应用程序接口&#xff09;已成为企业间、应用程序间乃至整个数字生态系统中数据交换与功能集成的核心&#xff0c;可 帮助跨多个设备互连多个应用程序或软件系统&#xff0c;定义它们可以发出的调用或请求的种类、调用的方式、应使用的…

C#复习封装_运算符重载

知识点一 基本概念 知识点二 基本语法 知识点三 实例 知识点四&#xff1a;使用 知识点五&#xff1a;可重载和不可重载的运算符 可重载运算符 算数运算符 #region 算数运算符//注意 符号需要两个参数还是一个参数public static Point operator -(Point p1,Point p2){retur…

【Flutter】Flutter安装和配置(mac)

1、准备工作 升级Macos系统为最新系统安装最新的Xcode电脑上面需要安装brew https://brew.sh/安装chrome浏览器&#xff08;开发web用&#xff09; 2.、下载flutter https://docs.flutter.dev/release/archive?tabmacos 大家网页后&#xff0c;选择对应的版本【Tips&#x…

VXLAN 为何采用UDP

VXLAN 简介 VXLAN是一种网络虚拟化技术&#xff0c;它通过在UDP数据包中封装MAC地址和IP信息&#xff0c;使得二层网络&#xff08;如以太网&#xff09;能够跨越三层网络&#xff08;如IP网络&#xff09;进行扩展。这种封装方式不仅支持TCP流量的传输&#xff0c;还能有效处…

Charles - 夜神模拟器证书安装App抓包-charles监控手机出现unknown 已解决

1.Openssl安装 http://slproweb.com/products/Win32OpenSSL.html exe下载安装后进行配置 新建系统变量OPENSSL_HOME&#xff0c;变量值设为(绝对路径)软件安装目录下的bin 直接浏览 编辑用户变量path&#xff0c;新建%OPENSSL_HOME%&#xff0c;最后点击确定 查看openssl版本&a…

读懂以太坊源码(4)-详细解析节点配置文件geth.toml

要读懂以太坊源码&#xff0c;先熟悉配置文件的每个配置项也是非常有必要的&#xff0c;以下代码是以太坊主网配置文件(geth.toml)的完整内容&#xff0c;后面是对每个配置项的说明&#xff1a; [Eth] NetworkId 0 SyncMode "snap" EthDiscoveryURLs [] SnapDisc…

Redis的持久化机制RDB与AOF

RDB RDB 是将 Redis 的内存中的数据定期保存到磁盘上&#xff0c;以防止数据在 Redis 进程异常退出或服务器断电等情况下丢失。 RDB 的优点是&#xff1a;快照文件小、恢复速度快&#xff0c;适合做备份和灾难恢复。 RDB 的缺点是&#xff1a;定期更新可能会丢数据&#xff0…

react文件详情

1、node_modules&#xff1a;存放项目所依赖的一些第三方包文件 2、public&#xff1a;静态资源文件夹 favicon.ico&#xff1a;导航图标 index.html&#xff1a;项目首页的html模版 logo192.png&#xff1a;logo图片 logo512.png&#xff1a;logo图片 manifest.json&#…

Databend Meta-Service 架构概述

Databend 的 meta-service 是一个基于 Raft 共识算法的分布式服务。其核心架构可以概括为一个 Raft 应用&#xff0c;如图中虚线框所示。 Raft 协议的主要组成部分包括&#xff1a; 分布式日志&#xff08;Log&#xff09;状态机&#xff08;State Machine&#xff09; 分布…

WPS 5亿用户受威胁:APT-C-60利用WPS Office漏洞发动间谍攻击

与韩国有关的网络间谍组织APT-C-60一直在利用Windows版WPS Office的一个零日代码执行漏洞&#xff0c;在东亚目标上安装SpyGlace后门程序。 WPS Office是由中国金山公司开发的一套办公套件&#xff0c;在亚洲很受欢迎。据报道,它在全球拥有超过5亿活跃用户。 这个被追踪为CVE…

静态检查工具

0. 简介 静态检查是软件开发过程中的一个重要环节&#xff0c;它在代码执行之前分析源代码或编译后的代码&#xff0c;以识别潜在的错误、代码规范违规、安全漏洞等问题。静态检查的好处包括提高代码质量、减少bug、增强安全性、提升开发效率等。它能够帮助开发者在早期发现问…