kubernetes(k8s)初学习

0、k8s是什么?

K8s 是一个数据中心的操作系统,也是一个自动化运维机器人。它负责管理和运行你的所有应用程序(比如你的可信数据空间服务平台),确保它们能 7x24小时不中断、需要时能扩展、出故障时能自愈。

假设有一个巨大的物流仓库(数据中心或云服务器集群),里面有很多货架(服务器):

在这里插入图片描述

1、所需环境

在使用学习k8s之前,可以先下载安装一个虚拟机,本人使用的是Vmware workstation和Ubuntu-24。具体下载可参考其他文章。下载安装好之后可以给Ubuntu下载点实用工具,用Ctrl + Alt + T 打开命令⾏窗⼝:

sudo apt update 
sudo apt install -y git vim curl jq  //下载git,vim,curl
sudo apt install -y openssh-server  //安装openssh-server,方便远程登陆虚拟机
sudo apt install open-vm-tools // 安装 open-vm-tools(实现宿主机与虚拟机文件夹共享等功能)
sudo apt install open-vm-tools-desktop  //实现剪贴板共享、文件拖拽等

2、Docker的安装

由于Docker Engine完全免费,且是Docker最初的真正形态,所以在接下来的学习过程中,选择使用Docker Engine,而不是Docker Desktop,之后在本专栏的文章中,Docker这个词通常指的就是Docker Engine。

我们已经在Linux虚拟机⾥安装了⼀些常⽤软件,⽤的是Ubuntu的包管理⼯具apt,所以,我们仍然可以使⽤同样的⽅式来安装Docker:先尝试输入命令docker,会得到“命令未找到”的提示以及如何安装的建议:

//Command 'docker' not found, but can be installed with:
sudo apt install docker.io
sudo service docker start       //启动docker服务
sudo usermod -aG docker ${USER}  //当前⽤户加⼊docker组
exit       //退出重新登录

验证docker是否安装成功,使用命令docker version和docker info。
docker version 会输出docker客户端和服务器各自的版本信息:
在这里插入图片描述
docker info会显示当前Docker系统相关的信息,例如CPU、内存、容器数量、镜像数量、容器运⾏时、存储⽂件系统等等。下图中显示1个容器处于停⽌状态,有8个镜像,存储⽤的⽂件系统是overlay2,Linux内核是5.13,操作系统是Ubuntu 22.04 Jammy Jellyfish,硬件是aarch64,两个CPU,内存4G。
在这里插入图片描述

3、 Docker的使用

⾸先,我们使⽤命令 docker ps ,它会列出当前系统⾥运⾏的容器,就像在Linux系统⾥使⽤ps 命令列出运⾏的进程⼀样。因为刚刚安装好Docker环境,这个时候还没有运⾏任何容器,所以列表是空的。
在这里插入图片描述
接下来,让我们尝试另⼀个⾮常重要的命令 docker pull ,从外部的镜像仓库(Registry)拉取⼀个busybox镜像(image),你可以把它类⽐成是Ubuntu⾥的“apt install”下载软件包:
在这里插入图片描述
如过这一步报错了,很有可能是网络或者镜像源的问题,排查问题过程如下:
(1)输入ping -c baidu.com,若结果正常,则说明网络没问题,若ping不通,说明网络有问题,先解决联网问题。
(2)如果网络没问题,那就是镜像源问题,使用下列命令更换镜像源:

# 创建 Docker 配置目录
sudo mkdir -p /etc/docker

# 配置国内镜像源
sudo tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com"
  ]
}
EOF

# 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker

# 重新拉取镜像
docker pull busybox

拉取镜像成功后显示:
在这里插入图片描述
执⾏命令 docker images ,它会列出当前Docker所存储的所有镜像:
在这里插入图片描述
可以看到,命令会显示有⼀个叫busybox的镜像,镜像的ID号是⼀串16进制数字,⼤⼩是1.41MB。
现在,我们要从这个镜像启动容器了,命令是 docker run ,执⾏ echo 输出字符串:

docker run busybox echo hello world

在这里插入图片描述
然后我们再⽤ docker ps -a命令,就可以看到这个已经运⾏完毕的容器:
在这里插入图片描述

4、Docker架构

在初步学会使用docker命令之后,这里简单介绍一下docker engine的架构,为之后的学习做铺垫。
在这里插入图片描述
刚才我们敲的命令⾏ docker 实际上是⼀个客户端client ,它会与Docker Engine⾥的后台服务Docker daemon通信,⽽镜像则存储在远端的仓库Registry⾥,客户端并不能直接访问镜像仓库。

Docker client可以通过 build 、 pull 、 run 等命令向Docker daemon发送请求,⽽Docker daemon则是容器和镜像的“⼤管家”,负责从远端拉取镜像、在本地存储镜像,从镜像⽣成容器、管理容器等等。

所以,在Docker Engine⾥,真正⼲活的其实是默默运⾏在后台的Docker daemon,⽽我们实际操作的命令⾏⼯具“docker”只是个“传声筒”的⻆⾊。

Docker官⽅还提供⼀个“hello-world”示例,可以为你展示Docker client到Docker daemon再到Registry的详细⼯作流程,你只需要执⾏这样⼀个命令:

docker run hello-world

它会先检查本地镜像,如果没有就从远程仓库拉取,再运⾏容器,最后输出运⾏信息:
在这里插入图片描述
欧克,今天先到这里,以后坚持记录自己的学习历程,培养自己独立思考、解决问题的能力。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐