想要看完整内容,请移步笔记王某的有道云笔记
【有道云笔记】K8s部署&DevOps
https://share.note.youdao.com/s/QHQUgJwG
1、简介
Kubernetes 简称k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。
中文社区:https://www.kubernetes.org.cn/
官方文档:https://kubernetes.io/zh/docs/home/
社区文档:http://docs.kubernetes.org.cn/
自己下载的资料1、 b站上有人边学边做的笔记 https://gitee.com/moxi159753/LearningNotes/tree/master/K8S 他都放在自己的这个git地址里面了
1、K8s工作原理

自己下载的资料2、下面是https://blog.csdn.net/m0_52574098/article/details/139871237 的学习笔记自己加以补充修改
Linux安装----使用VirtualBox和Vagrant快速安装(尚硅谷老师)
2、安装VirtualBox Vagrant 和Linux--Centos7
参考文档Vagrant 与 VirtualBox 的保姆级安装教程_oracle corporation通用串行总线控制器-CSDN博客
2.1、VirtualBox下载地址
Downloads -- Oracle VirtualBox https://www.virtualbox.org/wiki/Downloads 我这里王某安装的最新版本VirtualBox-7.2.4-170995-Win.exe,否则后面创建和连接k8s节点一直报错,垃圾
2.2、Vagrant下载地址
https://www.vagrantup.com/downloads 我这里王某安装的最新版本vagrant_2.4.9_windows_amd64.msi,否则后面创建和连接k8s节点一直报错,垃圾
2.3、上面的安装路径都是默认的路径,没有更改地址,并且下面的尚硅谷的C:\Users\Administrator\Desktop\k8s里面的vagrantfile的内容的内存和cpus改小了一点,因为我的机器配置比较低
2.4、按下面的步骤安装好之后,可以再更改每个节点的主板 和 处理器 改大一点,只要自己的电脑能支持就行了

1.1 安装VirtualBox虚拟机
虚拟机是在一些开发测试工作中常常需要用到的功能,常见的虚拟机软件主要有两款 VMware 和 VirtualBox 。VMware是商付费软件,而VirtualBox是免费软件,对于一般用用的话VirtualBox基本可以应付大多数情况了。这篇文章就讲讲VirtualBox入门使用相关内容。
(1)电脑开启虚拟化
参考文章:
https://baijiahao.baidu.com/s?id=1750799364398119663\&wfr=spider\&for=pc
(2)VirtualBox虚拟机
安装地址:https://www.virtualbox.org/
步骤1:

步骤2:

步骤3:
下载文件直接安装即可(选择更换安装路径)



1.2 Vagrant
(1) Vagrant介绍:
Vagrant 是⼀款⽀持⾃动化虚拟机安装、可配置流程的⽤于管理虚拟机的软件. 主要的优势在于可以提供⼀个可配置、可移植和复⽤的虚拟机环境 (通过定义 Vagrantfile , 类似 Dockerfile ), 并且可以使⽤shell、chef、puppet 等⼯具进⾏部署. 这⾥要注意, Vagrant 并不能单独使⽤, 必须要在⾃⼰的电脑⾥安装额外的虚拟机软件, ⽐如常⻅的虚拟机软件有: VirtualBox、VMWare 等。
(2)Vagrant安装
步骤1:
https://www.vagrantup.com/downloads.html
步骤2:
下载的文件直接点击下载即可
步驟3:
检查vagrant是否安装成功:win11下打开cmd命令行输入vagrant,如下所示安装成功:

把尚硅谷的k8s复制到桌面,不能有中文路径,然后在C:\Users\Administrator\Desktop\k8s的搜索栏打cmd并回车
视频上是执行的下面的内容的VagrantFile文件,所以要想生成4个,也换成下面的代码执行
Vagrant.configure("2") do |config|
修复循环:从1到3迭代,变量名改为i
(1...3).each do |i|
config.vm.define "k8s-node#{i}" do |node|
设置虚拟机的Box(centos/7 是官方合法Box)
node.vm.box = "centos/7"
# 设置虚拟机的主机名
node.vm.hostname = "k8s-node#{i}"
# 修复网络配置:私有网络 + 正确的IP拼接 + 子网掩码
node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"
# 修复共享目录配置(注释去掉后可直接用,路径需替换为你本地的实际路径)
# node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"
# 修复VirtualBox拼写错误
node.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称
v.name = "k8s-node#{i}"
# 设置虚拟机的内存大小(4GB 4096M) 我这里不支持,只能设置成2048
v.memory = 2048
# 设置虚拟机的CPU个数
v.cpus = 2 我这里不支持4,只能设置成1
end
end
end
end
先配置 全局设置->默认虚拟电脑位置 设置一个默认虚拟电脑位置,找一个磁盘空间比较大的地方放置以后安装的虚拟机,比如我王某的D盘,D:\software\Work\CentOS_System_Vagrant
否则安装在一个磁盘很小的盘上,容易崩掉

再打开VagrantFile生成的位置 D:\software\Work\CentOS_System_Vagrant的输入栏里面cmd并回车
再执⾏如下命令, 启动虚拟机:
vagrant up

注意:执行的时间会有点长,当执行成功之后再VirtualBox的界面中可以展示改Linux

----------------------安装很慢 ,如果安装失败可以用下面的命令清理------------
~~如果安装错成小位置的磁盘了,就执行下面的销毁清理步骤,再重新执行UP
你想知道在执行
vagrant up 过程中,如何中断正在进行的安装进程,以便先修改 VirtualBox 的默认虚拟机路径,再重新执行安装,我来一步步告诉你具体操作方法。
一、立即中断正在运行的 vagrant up 进程无论
vagrant up 处于「下载 Box」还是「创建虚拟机」阶段,都可以通过以下方式强制终止:
- 终端 / 命令行中中断(最直接)
- Windows/macOS/Linux 通用:在执行 vagrant up 的终端窗口中,按下 Ctrl + C 组合键(连续按 1-2 次),即可终止当前进程。
- 如果第一次按 Ctrl + C 只弹出确认提示(如 Do you want to continue? [y/N]),输入 N 并回车即可彻底终止。
- 如果终端卡死:
- Windows:打开「任务管理器」→ 找到「cmd.exe/PowerShell.exe」(执行 vagrant up 的进程)→ 结束任务;
- macOS/Linux:打开新终端,执行 ps aux | grep vagrant 找到 Vagrant 进程 ID,再执行 kill -9 进程ID 强制杀死。
- 清理可能残留的未完成虚拟机(关键步骤)
中断后,VirtualBox 可能会残留「半创建」的虚拟机,需先清理干净,避免后续报错:
undefined.打开 VirtualBox 主界面,查看是否有名称为 k8s-node1/k8s-node2 等的未完成虚拟机;
undefined.如果有,右键该虚拟机 → 选择「移除」→ 勾选「删除所有文件」(彻底删除残留文件);
undefined.(可选)进入 Vagrant 工作目录,执行 vagrant destroy -f(强制销毁所有 Vagrant 管理的未完成虚拟机)。
二、修改 VirtualBox 路径后重新执行 vagrant up
undefined.修改默认虚拟机路径(参考之前的步骤):
- 打开 VirtualBox → 「管理」→「全局设定」→「常规」→ 修改「默认虚拟电脑位置」(如 D:\VirtualBox_VMs)→ 确定保存。
undefined.重新执行安装: - 回到存放 Vagrantfile 的文件夹,打开新的终端 / 命令行;
- 执行 vagrant up,此时 Vagrant 创建的虚拟机文件会自动存储到你新设置的路径下。
三、额外注意:清理 Vagrant Box 缓存(可选)
清理可能残留的未完成虚拟机
undefined.(可选)进入 Vagrant 工作目录,执行 vagrant destroy -f(强制销毁所有 Vagrant 管理的未完成虚拟机)。
如果中断时已经下载了部分 CentOS Box 文件,可先清理缓存,避免残留文件影响:
查看已下载的 Box(确认是否有 centos/7)
vagrant box list
如果需要删除,执行(替换为实际的 Box 名称) 我的是执行完这个才清理掉的
vagrant box remove centos/7
→ 删除后重新执行
清理 Vagrant 缓存(可选)
vagrant box prune
vagrant init centos/7 https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box
vagrant up~~
1. 先创建node1,确认能成功启动
vagrant up
如果没有报错,4个都安装成功 每个系统的设置里面都可以看到有两个网卡,每个虚拟机都要按下面设置两个网卡的网卡1和网卡2。
第一个网卡"网络地址转换NAT"的作用,保证虚拟机和本地主机都能访问外部网络

第二个网卡的作用 "仅主机(Host-Only)网络", 用于虚拟机内部之间能互相访问的网络

3、每个虚拟机节点都要执行一下下面的几个步骤
0、vagrant ssh+ 节点名

1、su root 密码默认为vagrant
2、vi /etc/ssh/sshd_config 这个命令进入编辑模式之后,输入英文 i 进去插入模式
3、修改 PasswordAuthrntication yes/no

4、改完之后,按ESC,在输入 :wq 回车进行保存
5、重启服务 service sshd restart ,或者重启虚拟机也是可以的
6、exit; 命令退出当前节点,如下所示前面的节点名是哪一个节点exit;就是退出哪一个节点,这里是执行两次以便退出k8s-node1虚拟机节点。

每个节点都配好之后,可以不再使用命令连接了,就可以使用MobaXterm或者xshell进行连接的
4、设置虚拟机的集群环境
下面都是在xshell等工具连接之后 执行命令
1、使用 ip route show 显示的eth0表示设置的是双网卡模式

2、使用ip addr 查看节点的eth0 节点地址
发现三个节点的eth0的地址都一样,是因为默认网卡1设置的是"网络地址转换(NAT)"

但是在集群里面这样做,3个服务都会被当做同一个网络处理,所以要给每个节点设置一个net网络
5、给每个节点设置一个net网络
1、关闭所有虚拟机节点
2、打开 管理->全局设定, 创建一个net网络

下面是我新版本VirtualBox创建net网络的步骤

3、然后给每个虚拟机节点都设置上刚才选择的net的网络

4、并且要重新生成一下MAC地址,防止使用的是之前网络的旧地址

新版设置方式如下

最后使用vagrant status查看启动的节点
su root 密码默认为vagrant
vi /etc/ssh/sshd_config
修改 PasswordAuthrntication yes/no
重启服务 service sshd restart
可以看到分配的地址:10.0.2.15/24

3、每个虚拟机节点都要执行一下下面的几个步骤
0、vagrant ssh+ 节点名
1、su root 密码默认为vagrant
2、vi /etc/ssh/sshd_config 这个命令进入编辑模式之后,输入英文 i 进去插入模式
3、修改 PasswordAuthrntication yes/no
4、改完之后,按ESC,在输入 :wq 回车进行保存
5、重启服务 service sshd restart ,或者重启虚拟机也是可以的
6、exit; 命令退出当前节点,如下所示前面的节点名是哪一个节点exit;就是退出哪一个节点,这里是执行两次以便退出k8s-node1虚拟机节点。
每个节点都配好之后,可以不再使用命令连接了,就可以使用MobaXterm或者xshell进行连接的
4、设置虚拟机的集群环境
下面都是在xshell等工具连接之后 执行命令
1、使用 ip route show 显示的eth0表示设置的是双网卡模式
2、使用ip addr 查看节点的eth0 节点地址
发现三个节点的eth0的地址都一样,是因为默认网卡1设置的是"网络地址转换(NAT)"
但是在集群里面这样做,3个服务都会被当做同一个网络处理,所以要给每个节点设置一个net网络
5、给每个节点设置一个net网络
1、关闭所有虚拟机节点
2、打开 管理->全局设定, 创建一个net网络
下面是我新版本VirtualBox创建net网络的步骤
3、然后给每个虚拟机节点都设置上刚才选择的net的网络
4、并且要重新生成一下MAC地址,防止使用的是之前网络的旧地址
新版设置方式如下
修改网络配置
这是win11的界面,win10 找也是差不多的,类似这个。

修改Vagrantfile
config.vm.network "private_network", ip: "192.168.56.20"
修改前

修改后

修改完成后,重启启动vagrant
检查是否修改成功
Windows下打开cmd进行ping Linux修改之后的ip,通过Linux也ping Windows的本地ip,如图所示:

如图所示,表示网络配置修改成功

切换root账号
root账号的密码是vagrant
1.4. 安装docker(非root用户)
(1)安装教程
以下安装时非root用户,如果是root用户可以把sudo去除
https://www.runoob.com/docker/centos-docker-install.html
① 卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
② 安装 Docker Engine-Community
使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,
您可以从仓库安装和更新 Docker
设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,
并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
sudo yum install -y yum-utils
使用以下命令来设置稳定的仓库。
使用官方源地(比较慢)
sudo yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
阿里云
sudo yum-config-manager
--add-repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清华大学源
sudo yum-config-manager
--add-repo
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
③ 安装 Docker Engine-Community
安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
④ 启动docker和设置开机自启动
#启动docker服务
sudo systemctl start docker
#linux每次启动之后都自动docker
sudo systemctl enable docker
1.5 Docker安装Mysql
(1)下载镜像文件
docker pull mysql:5.7
(2)创建实例并启动
docker run-p 3306:3306--name mysql
-v /mydata/mysql/log:/var/log/mysql
-v /mydata/mysql/data:/var/lib/mysql
-v /mydata/mysql/conf:/etc/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7
#参数说明-p 3306:3306:将容器的 3306端口映射到主机的3306端口
#-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
#-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
#-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
#-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
(3)MySQL 配置
vi /mydata/mysql/conf/my.cnf
client
default-character-set=utf8
mysql
default-character-set=utf8
mysqld
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意:解决MySQL连接慢的问题
在配置文件中加入如下,并重启mysql
mysqld
skip-name-resolve
解释:
skip-name-resolve:跳过域名解析
(4)通过容器的mysql命令行工具连接
docker exec-it mysql mysql-uroot-proot
(5)设置root远程访问
通过以上步骤连接mysql之后,进行如下操作:
grant all privileges on . to 'root'@'%' identified by 'root' with grant option;
flush privileges;
(6)进入容器文件系统
docker exec-it mysql /bin/bash
1.6 Docker安装Redis
(1)下载镜像文件
docker pull redis:4.0
(2)创建实例并启动
#在linux主机上先创建指定的配置文件
mkdir-p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
运行拉取下的镜像
docker run
-p 6379:6379
--name redis
-v /mydata/redis/data:/data
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf
-d redis redis-server /etc/redis/redis.conf #表示启动redis服务就加载该配置文件
(3)使用redis镜像执行redis-cli命令连接
docker exec -it redis redis-cli
(4)解决redis低版本未持久化问题
进入/mydata/redis/conf/redis.conf配置文件中,添加appendonly yes即可,表示采用AOF进行持久化,修改配置之后重启服务。
appendonly yes