kubernetes入门到进阶-1

引言:在当今快节奏的技术世界中,云原生应用开发和部署已经成为企业取得成功的关键要素之一。而作为现代容器编排的领航者,Kubernetes 引领着这一领域的革新和变革。本系列文章旨在帮助读者全面了解 Kubernetes,从基本概念到高级应用,从部署到运维,我们将一步步深入探索 Kubernetes 的核心功能和架构,以及如何最大限度地利用其优势来构建可靠、高效的容器化应用环境。

1-初识容器

在准备开始前,我们使用VMware搭建了Linux虚拟机环境,有了这个基础,今天我们就开始正式学习,俗话说完事开头难,对于kubernetes这个哦昂达而陌生的领域来说更是如此,如何迈出学的第一步非常关键,所以,今天我们先从最简单,最基本的只是入手,聊聊足以流行的容器技术docker,先搭建实验环境再动手操作以下,进而破除他的神秘感

docker的诞生

现在我们都已经对Cpntainer Kubernets这些技术名词耳熟能详了,但你知道这一切的开端--docker第一次在世界上亮相是什么样子的吗

九年前,也就是2013年3月15日,在北美的圣克拉拉市吵开了异常Python开发者社区的主题会议PyCon,研究和探讨葛洪Python开发技术和应用,与我们常说的云“PaaS”“SaaS”根本毫不相关

在当日的会议日程快结束时,有一个闪电演讲(lighting talk)的小环节,其中有一位开发者,用了5分钟的时间,做了题为“The future Linux Containers”的演讲,不过临近末尾因为超时被主持人赶下了台,场面略显尴尬

相信你一定猜到了,这个只有短短五分钟的技术演示,就是我们目前所看到的,席绢这个业界的云原生大潮的开端,正式在这段演讲里,Solomon Hukes(dotcloud公司,也就是docker公司的创始人)首次向全世界展示了docker技术

五分钟的时间非常短,但演讲里却包含了几个现在已经普及名单单是却非常新奇的概念,比如容器,镜像,隔离运行进程等等,信息量非常的大

PyCon2013大会之后,许多人都意识到了容器的价值和重要性,发现它能够解决困扰了云厂商多年的打包,部署,管理,运维等问题,docker也就迅速流行了起来,成为了GitHub上的明星项目,然后在几个月的时间里,docker更是吸引了Amazon,Google,Red Hat等大公司的关注,这些公司利用自身的技术背景,纷纷在容器概念上大作文章,最终成就了我们今天所看到的至尊王者kubernetes的出现

docker的形态

好了,下面我们就要来一个情景再现,在我们的Linux虚拟机上搭建一个容器运行环境,模拟一下当年Solomon Hykes初次展示docker的情景

当然,如今的docker经过过了九年的发展,寂静远不是当初的吴下阿蒙了,不过最核心的那些概念和操作还是保持了一惯性,没有太大的变化

首先,我们需要对docker的形态有所了解,目前使用docker基本上有两个选择,docker desktop 和 docker Engine

Docker Desktop是专门针对个人使用而设计的,支持Mac和Windows快速安装,具有直观的图形界面,还集成了许多周边工具,方便易用。

不过,我个人不是太推荐使用Docker Desktop,原因有两个。第一个,它是商业产品,难免会带有Docker公司的“私人气息”,有一些自己的、非通用的东西,不利于我们后续的Kubernetes学习。第二个,它只是对个人学习免费,受条款限制不能商用,我们在日常工作中难免会“踩到雷区”。

Docker Engine则和Docker Desktop正好相反,完全免费,但只能在Linux上运行,只能使用命令行操作,缺乏辅助工具,需要我们自己动手DIY运行环境。不过要是较起真来,它才是Docker当初的真正形态,“血脉”最纯正,也是现在各个公司在生产环境中实际使用的Docker产品,毕竟机房里99%的服务器跑的都是Linux。

所以,在接下来的学习过程里,我推荐使用Docker Engine,之后在本专栏内,如果没有什么特别的声明,Docker这个词通常指的就是Docker Engine

docker的安装

在准备工作里,我们已经在Linux虚拟机里安装了一些常用软件,用的是centos的包管理工具yum,所以,我么仍然可以使用过同样的方式来安装docker

手先让我们厂商输入命令docker,会得到命令未找到的提示,还有如何安装的建议

刚才说过,Docker Engine不像Docker Desktop那样可以安装后就直接使用,必须要做一些手工调整才能用起来,所以你还要在安装完毕后执行下面的两条命令:

systemctl start docker 

docker启动后我们来验证docker是否安装成功了,使用的命令是docker version和docker info 

docker version 会输出docker客户端和服务器各自的版本信息:

docker info 会显示当前docker系统相关的信息,例如CPU,内存,容器数量,容器运行时,存储文件系统等等

docker info 显示的这些信息,对于我们了解docker的内部运行状态非常有用,一些容器的停止状态,有几个镜像,存储的文件系统等等

docker的使用 

现在,我们已经有了可用的docker运行环境,就可以来重现十年前Solomon Hykes的那场简短的技术演示了

首先,我们使用命令docker ps,他会列出当前系统里运行的容器,就像我们在Linux系统里使用ps命令列出运行的进程一样 

注意:docker操作都是这种形式,以docker开始,然后是一个具体的子命令,之前的docker version 和dockerinfo 也遵循了这样的规则,你还可以用help 或者--help来获取1帮助信息,查看命令清单和更详细的说明

因为我们刚刚安装好docker环境,这个时候还没有运行任何容器,所以列表显然是空的

接下来,我们来尝试一下另一个非常重要的命令docker pull ,从外部的镜像仓库(Registry)

拉取一个镜像busybox(image),你可以把他类比成是centos里的yum下载软件包

docker pull 会有一些看起来奇怪的输出信息,现在我们暂时不用管,后续的文章或有详细解释

docker images 会列出当前docker所存储的所有镜像

可以看到,命令会显出有一个叫busybox的镜像,镜像的ID号是一串16进制数字,大小是1.41MB,现在,我们就要从这个镜像来启动容器了,命令是docker run,执行echo输出字符串,这也正是Solomon Hykes在大会上所展示的最精彩的那部分

这条命令会在我们的终端上显示,输出计算式世界最著名的语句“hello world”

然后我们再用docker ps命令,加上一个参数-a,就可以看到这个已经运行完毕的容器

以上的这些,基本就是Solomon Hykes闪电演讲的全部内容了

初次接触容器的你应该感到很困惑,这些命令都做了什么,看起来并没有展示出什么特别神奇的本领,可能还不如直接写一个shell脚本来得省事

有同样感想的不知你一个,也许PyCon2013但是绝大部分的线长观众也都有这样的疑问,不要着急,我们在后续的文章在逐步讲解这其中的奥妙

docker的架构

这里我再稍微讲一下docker engine的架构,让你有个初步的印象,也为之后的学习做一个铺垫,下面这张图来自docker 官网 

https://docs.docker.com/get-started/overview

精准的描述了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 

他会先检查镜像,如果没有就从远程仓库拉取,在运行容器,最后输出运行信息

小结:

好了,今天我们初步了解了容器技术,再简单小结一下主要的内容

1容器技术起源于Docker,它目前有两个产品:Docker Desktop和Docker Engine,我们的课程里推荐使用免费的Docker Engine,它可以在Ubuntu系统里直接用apt命令安装。

2Docker Engine需要使用命令行操作,主命令是 docker,后面再接各种子命令。

3查看Docker的基本信息的命令是 docker version 和 docker info ,其他常用的命令有 docker ps、 docker pull、 docker images、 docker run。

4、Docker Engine是典型的客户端/服务器(C/S)架构,命令行工具Docker直接面对用户,后面的Docker daemon和Registry协作完成各种功能。

&&&     本篇只是开始,后续还有好多   &&&

最后,感谢您的阅读和支持,我们期待着在未来的文章中与您分享更多的技术资讯和见解

猜你喜欢

转载自blog.csdn.net/pengpeng0121/article/details/135021729