尚硅谷k8s自己实践步骤

想要看完整内容,请移步笔记王某的有道云笔记

【有道云笔记】K8s部署&DevOps

https://share.note.youdao.com/s/QHQUgJwG

1、简介

Kubernetes 简称k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。

中文官网:https://kubernetes.io/zh

中文社区: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」还是「创建虚拟机」阶段,都可以通过以下方式强制终止:

  1. 终端 / 命令行中中断(最直接)
  • 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 强制杀死。
  1. 清理可能残留的未完成虚拟机(关键步骤)
    中断后,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

https://blog.csdn.net/m0_52574098/article/details/139871237

相关推荐
摆烂z3 小时前
k8s频繁拉取镜像导致磁盘占满imagefs
云原生·容器·kubernetes
老百姓懂点AI17 小时前
[云原生] K8s Operator开发实战:智能体来了(西南总部)AI调度官的CRD设计与Controller实现
人工智能·云原生·kubernetes
huizhixue-IT21 小时前
收藏-Kubernetes怎么从私有仓库拉取镜像?(K8S系列)
云原生·容器·kubernetes
短剑重铸之日1 天前
《SpringCloud实用版》 Config + Bus + Nacos 配置中心终极方案
后端·spring·spring cloud
小信丶1 天前
BlockExceptionHandler类介绍、应用场景和示例代码
java·spring boot·后端·spring·spring cloud
yumenai_1 天前
【K8s 避坑指南】2026 最新 Kubernetes v1.28 + Containerd 安装全流程(内网/离线通用版)
ubuntu·云原生·容器·kubernetes·k8s
刘叨叨趣味运维1 天前
快速掌握K8s概念:云原生时代的操作系统
云原生·容器·kubernetes
市安1 天前
去dockerHub搜索并拉取一个redis镜像
redis·spring cloud·docker·eureka
The star"'1 天前
kubernetes的概述,部署方式,基础命令,核心部件
云原生·容器·kubernetes·云计算