《研发工程师玩转Kubernetes》将立足于实操,试图由浅入深探索Kubernetes世界。于是在技术选型和内容上也将由易到难,由简单到复杂。
为了降低进入的门槛,我们前期将不考虑多实例(机器)的部署,而采用单机部署。这样可以更加贴近研发人员的工作,并和运维工作拉开一定的距离,以方便研发人员学习和理解。
Kubernetes
在实操之前,大体介绍下Kubernetes是什么。
Kubernetes(常简称为K8s)是用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。该系统由Google设计并捐赠给Cloud Native Computing Foundation(今属Linux基金会)来使用。
它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。 它支持一系列容器工具,包括Docker等。
其核心是操作“容器化应用程序”,具体方式是:
- 自动部署
- 自动扩展
- 自动管理
按顺序,我们将陆续熟悉“容器化”、部署、扩展和管理这几个知识点。
容器化
RedHat的官网有一段介绍“容器化”的内容,这儿拿来供大家参考。
容器化是指将软件代码和所需的所有组件(例如库、框架和其他依赖项)打包在一起,让它们隔离在自己的"容器"中。
这样,容器内的软件或应用就可以在任何环境和任何基础架构上一致地移动和运行,不受该环境或基础架构的操作系统影响。
“容器化”帮我们做了环境的隔离,简化了编程和运行环境搭建的复杂度。这从一定程度上促进了微服务的普及。过去的一个大大的服务,被拆成若干微服务后,提升了系统的稳定性,但是也带来了管理的压力——因为要维护的服务多了。这个时候针对“容器”的高效管理工具就应运而生。Kubernetes就是这样的工具。
microk8s
MicroK8s is a single package that enables developers to get a fully featured, conformant and secure Kubernetes system running in under 60 seconds. Designed for local development, IoT appliances, CI/CD, and use at the edge, MicroK8s is available as a snap and available on Linux, Windows and Mac.
MicroK8s是一个单一的软件包,使开发人员能够在60秒内获得一个功能齐全、一致且安全的Kubernetes系统。MicroK8s专为本地开发、物联网设备、CI/CD和边缘使用而设计,可作为快照提供,并可在Linux、Windows和Mac上使用。
选用microk8s主要是因为我选用的Ubuntu Desktop版作为测试环境,而它是Ubuntu力推的。对比了下它的功能,好像比其他版本不差。
containerd
An industry-standard container runtime with an emphasis on simplicity, robustness and portability
业界标准的容器运行时,强调简单性、健壮性和可移植性
简单来说containerd出生自Docker,是Docker的核心。
docker
本系列因为要自己构建镜像,而Microk8s本地镜像仓库例子使用的是Docker,于是我们也将使用Docker来构建镜像。
安装和启动
Docker
sudo apt-get install docker.io
newgrp docker
sudo usermod -a -G docker $USER
Microk8s
sudo snap install microk8s --classic
sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
启动
su $USER
microk8s.start
简化kubectl命令
sudo snap alias microk8s.kubectl kubectl
参考资料
- https://www.redhat.com/zh/topics/cloud-native-apps/what-is-containerization
- https://kubernetes.io/
- https://containerd.io/
- https://icloudnative.io/posts/getting-started-with-containerd/
- https://microk8s.io/docs/registry-images