介绍
这边参考 centos;
CentOS 8基于RHEL 8版本,最初发行时使用Linux kernel 4.18, GCC 8.2, glibc 2.28, systemd 239和GNOME 3.28。
虽然yum仍然可以作为软件包管理器使用,并且您可以像以前一样继续使用它,但是它已经在后端进行了重大升级,从CentOS 7的版本3升级到CentOS 8的版本4。
这边参考 centos;
CentOS 8基于RHEL 8版本,最初发行时使用Linux kernel 4.18, GCC 8.2, glibc 2.28, systemd 239和GNOME 3.28。
虽然yum仍然可以作为软件包管理器使用,并且您可以像以前一样继续使用它,但是它已经在后端进行了重大升级,从CentOS 7的版本3升级到CentOS 8的版本4。
在日常的开发中,我们会有让程序在不同平台运行的需求。除了常用的Windows系统,Linux系统以及Mac OS系统外,我们甚至还希望让程序运行在以树莓派为代表的ARM平台下,或者是跑在嵌入式设备的路由器上。要构建出适合不同平台的镜像并不是一件容易的事情,除非你直接到目标平台下构建,或者模拟出目标平台下的环境来进行构建。
幸好,新版的Docker从版本19.03后已经开始支持一个新的命令行工具,叫做buildx
,目地就是为了解决我们在一个平台下,一次性构建出多个平台可用镜像的需求。BuildKit 是下一代的 Docker 镜像构建工具,来源于 Moby/BuildKit。在最新的 Docker Desktop 和 Docker CE 中,官方以 Buildx 形式集成到 Docker CLI 中,不再需要额外构建添加。buildx
是一个基于命令行的Docker扩展插件。
本章以macOS示例
官方文档:Ingress
Ingress
为外部访问集群提供了一个 统一 入口,避免了对外暴露集群端口;功能类似 Nginx,可以根据域名、路径把请求转发到不同的 Service。可以配置 https
跟 LoadBalancer 有什么区别?
如果一个集群中部署了多个应用,所有应用都在一起,就不太好管理,也可以导致名字冲突等。
我们可以使用 namespace 把应用划分到不同的命名空间,跟代码里的 namespace 是一个概念,只是为了划分空间。
官方文档
Helm
类似 maven, npm,pip,docker hub, 可以理解为是一个软件库,可以方便快速的为我们的集群安装一些第三方软件。
使用 Helm 我们可以非常方便的就搭建出来 MongoDB / MySQL 副本集群,YAML 文件别人都给我们写好了,直接使用。官网,应用中心
Kubernetes-ConfigMap与Secret的使用
数据库连接地址,这种可能根据部署环境变化的,我们不应该写死在代码里。
Kubernetes 为我们提供了 ConfigMap,可以方便的配置一些变量。文档
kubernetes 集群不会为你处理数据的存储,我们可以为数据库挂载一个磁盘来确保数据的安全。
你可以选择云存储、本地磁盘、NFS。
hostPath:把节点上的一个目录挂载到Pod,官方不推荐了,仅供单节点测试使用;不适用于多节点集群;
本地磁盘:可以挂载某个节点上的目录,但是这需要限定 pod 在这个节点上运行
云存储:不限定节点,不受集群影响,安全稳定;需要云服务商提供,裸机集群是没有的。
NFS:不限定节点,不受集群影响
StatefulSet
是用来管理有状态的应用,例如数据库。
deployment
部署的应用,都是不需要存储数据,不需要记住状态的,可以随意扩充副本,每个副本都是一样的,可替代的。而像数据库、Redis 这类有状态的,则不能随意扩充副本。StatefulSet 会固定每个 Pod 的名字