kubernetes-完美下载
话不多说,直接开始从0搭建k8s集群
环境:centous7.9 2核 20G
k8s-master 192.168.37.20
k8s-node1 192.168.37.21
k8s-node2 192.168.37.22
一:设置主机名
#设置主机名 hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node1 hostnamectl set-hostname k8s-node2 #将如下内容写入hosts中,是的三台机器可以互相解析 cat > /etc/hosts <<EOF 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.37.20 k8s-master 192.168.37.21 k8s-node1 192.168.37.22 k8s-node2 EOF
二.安装依赖包
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
三.设置防火墙为iptables并设置空规则
1.selinux关闭配置文件/etc/sysconfig/selinuxSELINUX=disabledsetenfore 0setenforce 12.iptables 关闭iptables -F3.firewalld暂时关闭systemctl stop firewalld永久关闭systemctl disable firewalld重启防火墙systemctl enable firewalld
四.调整内核参数,对于 K8S
cat > kubernetes.conf <<EOF net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 net.ipv4.ip_forward=1 net.ipv4.tcp_tw_recycle=0 vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它 vm.overcommit_memory=1 # 不检查物理内存是否够用 vm.panic_on_oom=0 # 开启OOM fs.inotify.max_user_instances=8192 fs.inotify.max_user_watches=1048576 fs.file-max=52706963 fs.nr_open=52706963 net.ipv6.conf.all.disable_ipv6=1 net.netfilter.nf_conntrack_max=2310720 EOF#拷贝kubernetes.conf到对应目录并启用 cp kubernetes.conf /etc/sysctl.d/kubernetes.confsysctl -p /etc/sysctl.d/kubernetes.conf
五.调整系统时区
timedatectl set-timezone Asia/Shanghai timedatectl set-local-rtc 0 #重启依赖系统时间的服务 systemctl restart rsyslog systemctl restart crond
5.1关闭系统不需要的服务
systemctl stop postfix && systemctl disable postfix
5.2设置rsyslogd和systemd journald
mkdir /var/log/journal # 持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
[Journal]
# 持久化保存到磁盘
Storage=persistent# 压缩历史日志
Compress=yesSyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000# 最大占用空间 10G
SystemMaxUse=10G# 单日志文件最大 200M
SystemMaxFileSize=200M# 日志保存时间 2 周MaxRetentionSec=2week# 不将日志转发到
syslog ForwardToSyslog=no
EOF#重启systemd-journald
systemctl restart systemd-journald
六.升级内核
6.1.加载netfilter模块
#加载netfilter模块
modprobe br_netfilter
CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,例如: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 需要进行内核升级的操作,【CentOS8以上版本不需要进行此操作】
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装一次!
yum --enablerepo=elrepo-kernel install -y kernel-lt
# 设置开机从新内核启动,需要对应不同版本内核
grub2-set-default 'CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 7 (Core)'
七.kube-proxy开启ipvs的前置条件
主要为了解决集群pod之间调度的方式,通过lvs的方式进行集群调度
#加载模块相关的依赖
#高版本内核需要将nf_conntrack_ipv4替换为nf_conntrack,否则会报错。高版本内核已经把nf_conntrack_ipv4替换为nf_conntrack了
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF#赋予权限并执行文件,然后检查模块是否被引导成功
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4#检查后信息如下:
[root@k8s-master ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
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_ipv4 147456 1 ip_vs
nf_defrag_ipv6 24576 2 nf_conntrack,ip_vs
nf_defrag_ipv4 16384 1 nf_conntrack
libcrc32c 16384 3 nf_conntrack,xfs,ip_vs
八.docker安装
8..1卸载历史版本。
这一步是可选的,如果之前安装过旧版本的Docker,可以
使用如下命令进行卸载:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
8.2设置源仓库
我这里用的阿里地址
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 8.3查看支持的docker版
注意docker与k8s的兼容性
yum list docker-ce --showduplicates |sort -ryum -y install docker-ce-19*systemctl enable docker && systemctl start dockerdocker --version
8.4镜像加速器
#vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"exec-opts":["native.cgroupdriver=systemd"]
} 8.5重启docker
systemctl restart docker
systemctl daemon-reload
systemctl restart docker
九.安装kubeadm、kubelet和kubectl
9.1添加阿里云的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
9.2安装kubeadm、kubelet和kubectl
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
- 为了实现Docker使用的cgroup drvier和kubelet使用的cgroup drver一致,建议修改"/etc/sysconfig/kubelet"文件的内容:
vim /etc/sysconfig/kubelet
# 修改
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
- 设置为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动:
systemctl enable kubelet
![]()
9.3部署k8s的Master节点
- 部署k8s的Master节点(192.168.217.100):慢一点,耐心等待下
# 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里需要指定阿里云镜像仓库地址
kubeadm init \--apiserver-advertise-address=192.168.37.20 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.18.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16

成功后如下输出

- 根据提示信息,在Master节点上使用kubectl工具:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

9.4添加k8s的Node节点
- 在192.168.37.21和192.168.37.22上添加如下的命令:耐心等待,可能慢一点
- 这个命令在master节点部署后最后两行有提示
# 向k8s集群中添加Node节点
kubeadm join 192.168.37.20:6443 --token 3810m3.7kmmkrrcdytu8fga \--discovery-token-ca-cert-hash sha256:979a660928b97f175128a85e51bff01430de11060afd0fe15f74b395bbdd9f5c

- 默认的token有效期为24小时,当过期之后,该token就不能用了,这时可以使用如下的命令创建token:
kubeadm token create --print-join-command
# 生成一个永不过期的token
kubeadm token create --ttl 0
9.5部署CNI网络插件
- 根据提示,在Master节点使用kubectl工具查看节点状态:
kubectl get nodes

- Master节点部署CNI网络插件(可能会失败,如果失败,请下载到本地,然后安装):
- 我就是这样下载的,本地下载执行
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

- 看部署CNI网络插件进度:
kubectl get pods -n kube-system

- 再次在Master节点使用kubectl工具查看节点状态:
kubectl get nodes

哈哈哈,终于成功了,记录下。
- 查看集群健康状态:
kubectl get cs

kubectl cluster-info

哈哈哈,再来看下这个状态。完美结束

附件
步骤七:本文k8s 部分参考:从零搭建k8s集群 - 许大仙 - 博客园
步骤一到六:本文准备工作参考:Kubernetes学习【1-3】 | Banyuh
步骤八:本文docker 部分亲测无问题。故障多少参考的是kimi,特别注意yum源和swap ,防火墙必须关闭,docker 必须启动。
- 永久关闭swap分区:
# 永久
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 重启
reboot
- 临时关闭swap分区:
swapoff -a
相关文章:
kubernetes-完美下载
话不多说,直接开始从0搭建k8s集群 环境:centous7.9 2核 20G k8s-master 192.168.37.20 k8s-node1 192.168.37.21 k8s-node2 192.168.37.22 一:设置主机名 #设置主机名 hostnamectl set-hostname k8s-master hostnamectl set-h…...
PostgreSQL 常用函数
PostgreSQL 常用函数 在数据库管理系统中,函数是执行特定任务的基本构建块。PostgreSQL 是一个功能强大的开源关系数据库管理系统,提供了丰富的内置函数,这些函数极大地增强了数据库操作的能力。以下是一些在 PostgreSQL 中常用的函数&#…...
【初阶数据结构】树和二叉树
目录 前言树的概念与结构树的概念树的相关概念树的表示 二叉树的概念及结构二叉树的概念几种特殊的二叉树1.满二叉树2.完全二叉树 二叉树的性质二叉树的存储结构1、顺序存储2、链式存储 前言 前面我们学习了顺序表,单链表,栈和队列,它们在逻…...
【中等】59.螺旋矩阵Ⅱ
题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入:n…...
Spring Boot + Vue 接入腾讯云人脸识别API(SDK版本3.1.830)
一、需求分析 这次是基于一个Spring Boot Vue的在线考试系统进行二次开发,添加人脸识别功能以防止学生替考。其他有对应场景的也可按需接入API,方法大同小异。 主要有以下两个步骤: 人脸录入:将某个角色(如学生&…...
测试工程师玩转DeepSeek之Prompt
以下是测试工程师使用DeepSeek的必知必会提示词指南,分为核心场景和高效技巧两大维度: 一、基础操作提示模板 1. 测试用例生成 "作为[金融系统/物联网设备/云服务]测试专家,请为[具体功能模块]设计测试用例,要求࿱…...
虚中断理解
虚中断(Virtual Interrupt)是指在计算机系统中,特别是在虚拟化环境下,虚拟机或虚拟操作系统中使用的一种中断机制。它允许虚拟机监控程序(Hypervisor)或虚拟化管理程序在虚拟机之间进行中断处理和资源管理。…...
PC端-发票真伪查验系统-Node.js全国发票查询接口
在现代企业的财务管理中,发票真伪的验证至关重要。随着电子发票的普及,假发票问题日益严峻,如何高效、准确的对发票进行真伪查验,已经成为各类企业在日常运营中必须解决的关键问题。翔云发票查验接口做企业财务管理、税务合规的好…...
给Python加入自己的函数
在日常研究中,我们有时候会写一些Python没有的,但是很多个脚本都需要用的函数,反复的复制函数太过麻烦,我们可以进行一些简单的操作来变成一个可以直接import的函数 1. 首先我们新建一个.py文件,把我们的函数放进去&a…...
JAVA中包装类和泛型 通配符
目录 1. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和封箱 1.3 自动自动装箱和封箱 2. 什么是泛型 3. 引出泛型 3.1 语法 4. 泛型类的使⽤ 4.1 语法 4.2 ⽰例 4.3 类型推导(Type Inference) 5 泛型的上界 5.1 语法 6. 通配符 6.1 通配符解决什么问题 6.2…...
Qt TCP服务端和客户端程序
1、服务端程序 利用QtCreator新建QMainWindow或QWidget工程,绘制UI如下所示。 mainwindow.h代码如下: #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTcpServer> #include <QTcpSocket> #include &l…...
level2Day5
Makefile make是工程管理器 先写了1个f1.c里面写了一个函数 然后f2.c里面也写了一个函数 还有一个头节点 又写了一个makefile的函数 输入make编译,但是我没装make需要装一下。 sudo apt install make 然后make, Makefile变量的使用 通过赋值ÿ…...
青少年学习编程如何平衡使用DeepSeek与独立思考
前言 对于正在学习编程的青少年来说,DeepSeek生成代码的功能是一把双刃剑。如果合理使用,它可以成为青少年学习编程的有力助手;但如果过度依赖,可能会阻碍他们的思维发展和能力提升。关键在于引导青少年正确看待工具的作用&#…...
MySQL 8.0 Enterprise Backup (MEB) 备份与恢复实践指南
一、MEB 核心价值与特性 1.1 产品定位 MySQL Enterprise Backup (MEB) 是Oracle官方推出的企业级物理热备份工具,专为MySQL 8.0设计,支持InnoDB/XtraDB引擎的在线备份,同时兼容MyISAM表的锁定备份。 1.2 核心优势 零停机热备份࿱…...
UE5从入门到精通之多人游戏编程常用函数
文章目录 前言一、权限与身份判断函数1. 服务器/客户端判断2. 网络角色判断二、网络同步与复制函数1. 变量同步2. RPC调用三、连接与会话管理函数1. 玩家连接控制2. 网络模式判断四、实用工具函数前言 UE5给我们提供了非常强大的多人网路系统,让我们可以很方便的开发多人游戏…...
[Web 安全] 反序列化漏洞 - 学习笔记
关注这个专栏的其他相关笔记:[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01:反序列化漏洞 — 漏洞介绍 反序列化漏洞是一种常见的安全漏洞,主要出现在应用程序将 序列化数据 重新转换为对象(即反序列化)的过程中…...
minio作为K8S后端存储
docker部署minio mkdir -p /minio/datadocker run -d \-p 9000:9000 \-p 9001:9001 \--name minio \-v /minio/data:/data \-e "MINIO_ROOT_USERjbk" \-e "MINIO_ROOT_PASSWORDjbjbjb123" \quay.io/minio/minio server /data --console-address ":90…...
Leetcode2717:半有序排列
题目描述: 给你一个下标从 0 开始、长度为 n 的整数排列 nums 。 如果排列的第一个数字等于 1 且最后一个数字等于 n ,则称其为 半有序排列 。你可以执行多次下述操作,直到将 nums 变成一个 半有序排列 : 选择 nums 中相邻的两…...
redis小记
redis小记 下载redis sudo apt-get install redis-server redis基本命令 ubuntu16下的redis没有protected-mode属性,就算sudo启动,也不能往/var/spool/cron/crontabs写计划任务,感觉很安全 #连接到redis redis-cli -h 127.0.0.1 -p 6379 …...
C/C++基础知识复习(47)
1) 接口继承与实现继承的区别 接口继承 接口继承意味着定义一个类,它只声明一组方法(通常是纯虚函数),但是不提供任何实现。继承这个接口的子类必须实现这些方法。接口继承的主要目的是规范化行为。 C 例子: 在 C 中…...
OkHttp、Retrofit、RxJava:一文讲清楚
一、okHttp的同步和异步请求 Call 是 OkHttp 的核心接口,代表一个已准备好执行的 HTTP 请求。它支持 同步 和 异步 两种模式: enqueue——>okHttp异步 OkHttpClient client new OkHttpClient();Request request new Request.Builder().url("…...
netty详细使用
Netty是一个基于Java的高性能网络应用框架,主要用于快速开发高性能的网络通信应用程序。以下是Netty的详细使用步骤: 添加Netty依赖:在项目的pom.xml中添加Netty的依赖项,例如: <dependency><groupId>io…...
计算机视觉(opencv-python)入门之图像的读取,显示,与保存
在计算机视觉领域,Python的cv2库是一个不可或缺的工具,它提供了丰富的图像处理功能。作为OpenCV的Python接口,cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV CV2常用图像处理方…...
ActiveMQ之VirtualTopic
一句话总结: VirtualTopic是为了解决持久化模式下多消费端同时接收同一条消息的问题。 现实中多出现这样一个场景: 生产端产生了一笔订单,作为消息MessageOrder发了出去。 这笔订单既要入订单系统归档,又要入结算系统收款&#x…...
第16届蓝桥杯模拟赛3 python组个人题解
第16届蓝桥杯模拟赛3 python组 思路和答案不保证正确 1.填空 如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。 请问, 2024 的最大的质因数是多少? 因为是填空题,所以直接枚举2023~2 &am…...
UE5 Computer Shader学习笔记
首先这里是绑定.usf文件的路径,并声明是用声明着色器 上面就是对应的usf文件路径,在第一张图进行链接 Shader Frequency 的作用 Shader Frequency 是 Unreal Engine 中用于描述着色器类型和其执行阶段的分类。常见的 Shader Frequency 包括:…...
2.1部署logstash:9600
实验环境:关闭防火墙,完成java环境 yum -y install wget wget https://d6.injdk.cn/oraclejdk/8/jdk-8u341-linux-x64.rpm yum localinstall jdk-8u341-linux-x64.rpm -y java -version 1.安装logstash tar xf logstash-6.4.1.tar.gz -C /usr/local…...
SQL笔记#集合运算
目录 一、表的加减法 1、什么是集合运算 2、表的加法——UNION 3、集合运算的注意事项 4、包含重复行的集合运算——ALL运算 5、选取表中公共部分——INTERSECT 6、记录的减法——EXCEPT 二、联结(以列为单位对表进行联结) 1、什么是联结(JOIN) 2、内联结——INSER…...
多模态人物视频驱动技术回顾与业务应用
一种新的商品表现形态,内容几乎存在于手淘用户动线全流程,例如信息流种草内容、搜索消费决策内容、详情页种草内容等。通过低成本、高时效的AIGC内容生成能力,能够从供给端缓解内容生产成本高的问题,通过源源不断的低成本供给倒推…...
基于Matlab实现汽车远近光灯识别的详细步骤及代码示例
以下是一个基于Matlab实现汽车远近光灯识别的详细步骤及代码示例,主要通过图像处理技术来区分远光灯和近光灯。 整体思路 图像预处理:包括读取图像、灰度化、去噪等操作,以提高后续处理的准确性。边缘检测:找出图像中的边缘信息…...
