集群拥有成千上百个节点,每个节点是一台物理机或虚拟机。集群一般远离用户,坐落在数据中心。为了让这些节点互相协作,对外提供一致且高效的服务,集群需要操作系统,K8s就是这样的操作系统。
比较K8s和单机操作系统,K8s相当于内核,负责集群软硬件资源管理,并对外提供统一的入口,用户可以通过这个入口来使用集群,和集群沟通。而运行在集群之上的程序,与普通程序有很大的不同。这样的程序是“关在笼子里”的程序,它们从被制作,到被部署,再到被使用都不寻常。
5.1 “关在笼子里”的程序
5.1.1 代码
假如使用Go语言写一个简单的Web服务器程序,这个程序监听2580端口,通过HTTP协议访问这个服务的根路径,服务会返回“This is a small app for K8s”
使用go build命令编译这个程序,会产生一个可执行文件app。这是一个普通的可执行文件,它在操作系统里运行,会依赖系统里的库文件。
5.1.2 “笼子”
为了让这个程序不依赖操作系统自身的库文件,需要制作容器镜像,即隔离的运行环境。
Dockerfile是制作容器镜像的“菜谱”,包括了制作镜像的两个步骤:下载一个CentOS基础镜像,以及把app这个可执行文件放到镜像中。
FROM centos
APP app /usr/local/bin
5.1.3 地址
制作好的镜像存在本地环境中,需要吧这个镜像上传到镜像仓库里去,这里的镜像仓库相当于应用商店。可以使用阿里云的镜像仓库,上传之后镜像的地址是:
registry.cn-hangzhou.aliyuncs.com/kube-easy/app:latest
镜像地址可以拆分为四个部分:仓库地址/命名空间/镜像名称:镜像版本。镜像地址:阿里云杭州镜像仓库,命名空间:kube-easy,镜像版本:app:'atest
网友评论