当前位置: 首页 > news >正文

KubeAdmin方式搭建K8S(1.26.0)

本次安装K8S版本为1.26.0

服务器环境配置

ip描述配置
192.168.233.221master节点CPU(2C) 内存(2G) 硬盘(50G)
192.168.233.222node1节点CPU(2C) 内存(2G) 硬盘(50G)
192.168.233.223node2节点CPU(2C) 内存(2G) 硬盘(50G)

服务器环境配置准备

服务器环境配置三台服务器都要执行下面的操作

设置服务器主机名

#192.168.43.201服务器执行
hostnamectl set-hostname k8s-master
#192.168.43.202服务器执行
hostnamectl set-hostname k8s-node1
#192.168.43.203服务器执行
hostnamectl set-hostname k8s-node2

修改host文件解析域名

cat >> /etc/hosts << EOF
192.168.56.100 k8s-master
192.168.56.101  k8s-node1
192.168.56.102  k8s-node2
EOF

配置免密登录

#生成密钥,一路回车即可
ssh-keygen
#将本机密钥拷贝至目标服务器,实现免密登录
ssh-copy-id -i ~/.ssh/id_rsa.pub K8s-master
ssh-copy-id -i ~/.ssh/id_rsa.pub K8s-node1
ssh-copy-id -i ~/.ssh/id_rsa.pub K8s-node2

时间同步

yum -y install ntp ntpdate#时间服务器可以选择:ime.nist.gov、time.nuri.net、0.asia.pool.ntp.org、1.asia.pool.ntp.org、2.asia.pool.ntp.org、3.asia.pool.ntp.org中任意一个,只要保证可用就OK
tpdate 0.asia.pool.ntp.org#将系统时间写入硬件时间
hwclock --systohc
timedatectl

禁用iptables和firewalld服务

kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

# 1 关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
# 2 关闭iptables服务
systemctl stop iptables
systemctl disable iptables

禁用selinux

selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题

# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disabled
# 注意修改完毕之后需要重启linux服务
SELINUX=disabled
# 永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config # 临时
setenforce 0

禁用swap分区

# vim /etc/fstab 分区配置文件,注释掉swap分区一行
# 注意修改完毕之后需要重启linux服务UUID=455cc753-7a60-4c17-a424-7741728c44a1 /boot    xfs     defaults        0 0/dev/mapper/centos-home /home                      xfs     defaults        0 0
# /dev/mapper/centos-swap swap                      swap    defaults        0 0
# 临时关闭swap
swapoff -a 
# 永久关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab

修改linux的内核参数

# 修改linux的内核参数,添加网桥过滤和地址转发功能
# 创建/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1# 重新加载配置
sysctl -p# 加载网桥过滤模块
modprobe br_netfilter# 查看网桥过滤模块是否加载成功
lsmod | grep br_netfilter

配置ipvs功能

# 1 安装ipset和ipvsadm
yum install ipset ipvsadmin -y# 2 添加需要加载的模块写入脚本文件
cat <<EOF >  /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF# 3 为脚本文件添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules# 4 执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules# 5 查看对应的模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

重启服务器

reboot

Docker和cri-dockerd安装

三台服务器都要安装

  • CRI是Kubernetes中定义的一种标准化接口,用于与容器运行时通信,并管理容器的创建、启动、停止和销毁等操作。K8S => cri-docker => docker

Docker安装参考博客:Centos安装docker
cri-dockerd安装:

#下载rpm包
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
#创建路径
mkdir /usr/local/cri-dockerd 
#移动安装包至文件夹下
mv cri-dockerd-0.3.1-3.el7.x86_64.rpm /usr/local/cri-dockerd
#安装rpm包
rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm
#需要修改配置
vim /usr/lib/systemd/system/cri-docker.service#注释以下配置项
#ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd://
#新增以下配置项
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7#修改后保存,然后重新加载,并配置cri-docker开机自启
systemctl daemon-reload
systemctl start cri-docker && systemctl enable cri-docker

K8S安装

配置k8s yum源

配置yum源为阿里源,提高安装速度

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

安装K8s

#安装文件
yum install -y kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0
#启动kubelet
systemctl enable kubelet

配置集群

Master节点执行初始化命令

#注意 192.168.233.221需要改成自己服务器的ip
kubeadm init \--apiserver-advertise-address=192.168.233.221 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.26.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--cri-socket=unix:///var/run/cri-dockerd.sock \--ignore-preflight-errors=all
#执行后稍等片刻,K8s会输出一大串提示,告诉你如果想要使用集群,需要把配置文件放到家目录下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#上面这三个命令必须执行,不让会提示权限问题。#init后还会输出各节点join时的命令,从节点加入时通过改命令加入
kubeadm join 192.168.226.128:6443 --token  b3n3vs.kopnhfh0r34j7yl4 \
--discovery-token-ca-cert-hash sha256:b3562644ef3bf180939252c79157c96850c6fa1db5dcee0f1889156508730fb9

从节点加入集群

#注意要制定cri-docker.sock的地址
kubeadm join 192.168.226.128:6443 --token  b3n3vs.kopnhfh0r34j7yl4 \
--discovery-token-ca-cert-hash sha256:b3562644ef3bf180939252c79157c96850c6fa1db5dcee0f1889156508730fb9 \
--cri-socket=unix:///var/run/cri-dockerd.sock

安装容器网络插件

kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可,本次选择flannel

#master节点安装 获取fannel的配置文件,这个文件是外网的,如果下载不下来可以用下面提供的文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 使用配置文件启动flannel
kubectl apply -f kube-flannel.yml

执行完 kubectl apply后可以通过 kubectl get pods -A 查看pods是否创建成功,这里需要多等待下,等到pods的状态都为就绪状态就表示安装成功了。

#稍等片刻再次查看集群状态
kubectl get nodes

K8S卸载

#1、停止相关服务
systemctl stop kubelet
systemctl stop etcd
systemctl stop docker#2、卸载k8s
kubeadm reset -f#3、删除k8s相关目录
modprobe -r ipip
lsmod
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd#4、卸载k8s相关程序
yum -y remove kube*#5、更新镜像
yum clean all
yum -y update
yum makecache

附件

kube-flannel.yml

cri-dockerd安装包:后缀更改为rpm即可

cri-dockerd-0.3.1-3.el7.x86_64.txt

相关文章:

KubeAdmin方式搭建K8S(1.26.0)

本次安装K8S版本为1.26.0 服务器环境配置 ip描述配置192.168.233.221master节点CPU&#xff08;2C&#xff09; 内存&#xff08;2G&#xff09; 硬盘&#xff08;50G&#xff09;192.168.233.222node1节点CPU&#xff08;2C&#xff09; 内存&#xff08;2G&#xff09; 硬盘…...

代码随想录打卡—day57—【编辑距离】— 9.2+9.3 编辑距离系列

1 647. 回文子串 647. 回文子串 纯暴力解法&#xff0c;应该是O&#xff08;n^3&#xff09;&#xff0c;居然AC了&#xff1a; class Solution { public:int countSubstrings(string s) {// 暴力int cnt 0;cout << s.substr(1,1);for(int i 0; i < s.size();i){…...

Blender界面学习03 原点、鼠标所在位置的缩放与旋转

物体的坐标原点可以移动 放大缩小时默认是屏幕中央&#xff0c;修改为鼠标在哪儿就缩放哪儿 默认旋转时围绕屏幕的中心 可以修改为指定对象旋转...

指针结构体题

目录 初阶指针_指针的概念 1.使用指针打印数组内容 2.字符串逆序 3.整形数组和字符串数组 4.打印菱形 5.打印水仙花数 6.计算求和 结构体 7.喝汽水问题 8.程序死循环解释 9.选择题总结tips 今天是重点是指针&结构体题题目。&#x1f197;&#x1f197;&#x…...

【力扣每日一题02】数组篇--删除有序数组中的重复项

一、题目 给你一个 升序排列 的数组 nums &#xff0c; 请你原地删除重复出现的元素&#xff0c;使每个元素 只出现一次 返回删除后数组的新长度。 元素的 相对顺序 应该保持 一致 。 然后返回 nums 中唯一元素的个数。 二、思路解析 这道题要用到 “双指针” 的概念&…...

Vue在表格中拿到该行信息的方式(作用域插槽-#default-scope-解决按钮与行点击的顺序问题)

遇到的问题 在做表格的时候&#xff0c;表格是封装好了的&#xff0c;用于展示数据。如果想给单行增加按钮&#xff0c;可以单独写一列存放按钮&#xff0c;最基本的需求是&#xff0c;点击按钮后要拿到数据然后发起请求。 且Vue的element-plus&#xff0c;当我们点击按钮之后…...

OJ练习第158题——单词拆分 II

单词拆分 II 力扣链接&#xff1a;140. 单词拆分 II 题目描述 给定一个字符串 s 和一个字符串字典 wordDict &#xff0c;在字符串 s 中增加空格来构建一个句子&#xff0c;使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。 注意&#xff1a;词典中的…...

ArcGIS地块面积分割调整工具插件

地块分割调整工具可以实现将选定的图斑按照面积比例或者指定的面积&#xff0c;分割成多个图斑。 各个图斑的面积用逗号分隔&#xff0c;比例分割设置时&#xff0c;用整数表示。 面积分割时&#xff0c;最后一个图斑的面积可以不写&#xff0c;插件可以自动计算图斑的面积&a…...

基于Matlab实现多个图像增强案例(附上源码+数据集)

图像增强是数字图像处理中的一个重要步骤&#xff0c;它通过一系列的算法和技术&#xff0c;使图像在视觉上更加清晰、明亮、对比度更强等&#xff0c;以便更好地满足人们的需求。在本文中&#xff0c;我们将介绍如何使用Matlab实现图像增强。 文章目录 部分源码源码数据集下载…...

计算机网络 概述部分

目录 计算机网络在信息时代的作用 计算机网络的重要特征 网络&#xff0c;internet,Internet的区别 局域网 广域网的区别 网络协议的分层 计算机网络在信息时代的作用 计算机网络的重要特征 连通性&#xff1a;彼此联通&#xff0c;交换信息 共享性&#xff1a;信息共享…...

使用DOSBOX运行TurboC2,TC2使用graphics库绘图

Turbo C是由美国Borland公司开发的一套C语言程序开发工具&#xff0c;Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套Turbo系列软件&#xff0c;如Turbo BASIC、Turbo Pascal、Turbo Prolog&#xff0c;这些软件很受用户欢迎 [1] 。 Turbo C集成了程序…...

OpenCV(二):认识Mat容器

目录 1.什么是Mat类 2.Mat类能存储的数据 整数类型&#xff08;有符号和无符号&#xff09;&#xff1a; 浮点数类型&#xff1a; 布尔类型&#xff1a; 3.Mat类的创建 1.利用矩阵宽、高和类型参数创建Mat类 2.利用矩陈Size(结构和数据类型参数创建Mat类 3.利用已有Mat…...

springboot整合Excel填充数据

填充一组数据 准备模板 封装数据 import java.util.ArrayList; import java.util.List;/*** 使用实体类封装填充数据** 实体中成员变量名称需要和Excel表各种{}包裹的变量名匹配*/ Data public class FillData {private String name;private int age;// 生成多组数据代码pub…...

c语言技术面试记录 ---- 纲要、题目、分析及给分标准

纲要 作为一个面试官&#xff0c;除了编程类的问题&#xff0c;你还可以考虑问一些关于技术知识、项目经验、解决问题能力和团队合作等方面的问题&#xff0c;以全面评估应聘者的能力和适应性。以下是一个可能的提问逻辑和大纲&#xff0c;供你参考&#xff1a; 技术知识和基…...

前端进阶之——模块化

在做项目的时候越来越发现模块化的重要性&#xff0c;做好模块化开发不仅给后期的维护带来不少好处而且大大提升项目开发效率&#xff0c;接下来整理一下模块化相关知识吧。 模块化开发的优点 封装方法、提高代码的复用性、可维护性和可读性隔离作用域&#xff0c;避免污染全…...

Python爬虫抓取表情包制作个性化聊天机器人

在现代社交媒体和即时通讯应用中&#xff0c;使用表情包已经成为一种流行的沟通方。本文将介绍如何利用Python编写一个简单而有趣的聊天机器人&#xff0c;并通过爬虫技术来抓取各类表情包&#xff0c;使其具备个性化特点。   1.确定需求与功能   -定义聊天机器人需要实现哪…...

使用pip命令安装库,装到其他环境中的问题。

问题描述&#xff1a;我们在pycharm中创建了新的虚拟环境&#xff0c;但是在其终端使用Pip命令安装库时&#xff0c;发现库却安装到了其他conda创建的环境中。图示安装gym库&#xff0c;刚开始安装到了其他地方&#xff0c;第二次正确安装。 原因分析&#xff1a;安装库时&…...

如何使用CSS实现一个带有动画效果的进度条?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ HTML 结构&#xff1a;⭐ CSS 样式&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那…...

uni-app 报错 navigateTo:fail page “/pages/.../...“ is not found

这个错误的意思是&#xff1a;识别不到该页面 错误可能一&#xff1a;没有在 pages.json【微信小程序是 app.json】中定义该页面的路径 如&#xff1a; pages.json "pages": [{"path": "pages/index/index" }, {"path": "pag…...

【unity插件】使用BehaviorDesigner插件制作BOSS的AI行为树

文章目录 前言素材插件一、基础使用二、敌人物理攻击三、敌人面向玩家四、敌人法术攻击五、随机进行攻击六、敌人不同的阶段推荐学习视频源码完结 前言 Behavior Designer是一个行为树插件&#xff0c;是一款为了让策划&#xff0c;程序员&#xff0c;美术人员方便使用的可视化…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例

目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码&#xff1a;冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

Django RBAC项目后端实战 - 03 DRF权限控制实现

项目背景 在上一篇文章中&#xff0c;我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统&#xff0c;为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...