Kubernetes学习

2020.9.14 星期一 21:18

基础知识

k8s入门教程

2. k8s常用概念介绍

节点 (Master node and Worker node)

节点通常指的就是服务器,在k8s中有两种节点:管理节点(Master Node)和工作节点(Worker Node)
管理节点(Master Node):负责管理整个k8s集群,一般由3个管理节点组成HA的架构。
工作节点(Worker Node):主要负责运行容器。

命名空间 (Namespace)

k8s命名空间主要用于隔离集群资源、隔离容器等,为集群提供了一种虚拟隔离的策略;默认存在3个名字空间,分别是默认命名空间 default、系统命名空间 kube-system 和 kube-public。

Object

k8s 对象(Object)是一种持久化存储并且用于表示集群状态的实体。k8s 对象其实就是k8s自己的配置协议,总之我们可以通过定义一个object让k8s根据object定义执行一些部署任务、监控任务等等。

POD

Pod是 Kubernetes 部署应用或服务的最小的基本单位。一个Pod 封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络 IP 以及管理控制容器运行方式的策略选项。

副本集 (Replica Set,RS)

是一种控制器,负责监控和维护集群中pod的副本(replicas)数,确保pod的副本数是我们期望的样子。

部署 (Deployment)

表示对k8s集群的一次更新操作,是k8s集群中最常用的Object,主要用于部署应用。支持滚动升级。

服务 (service)

是对应用的抽象,也是k8s中的基本操作单元,一个服务背后由多个pod支持,服务通过负载均衡策略将请求转发到容器中。

Ingress

是一种网关服务,可以将k8s服务通过http协议暴露到外部。
无状态应用 & 有状态应用

3. k8s架构

4. 基于k8s的常见web应用部署架构

5. 部署应用

6. 容器之间共享文件存储

根据存储方式不同,k8s支持多种持久卷(Persistent Volumes)类型,阿里云也对k8s进行一些扩展支持,目前支持NAS、OSS、云盘三种持久卷类型。

下面是关于阿里云支持的持久卷类型的介绍:

NAS - 阿里云高性能分布式文件系统,支持共享存储。
OSS - 阿里云对象存储, 也是一个分布式文件系统,支持共享存储。
云盘 - 阿里云云盘,不支持共享存储。7. k8s配置管理
如果希望一个镜像(image)更具有通用性,与环境无关,那么应该将环境相关的配置参数从镜像中分离出来。

###

其他参考

k8s入门教程

Kubernetes(k8s)中文教程
Kubernetes(k8s) 是用于自动部署,扩展和管理容器化应用程序的开源系统。

它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现,Kubernetes 构建在 Google 15 年生产环境经验基础之上,并结合来自社区的最佳创意和实践。

ingress

K8S Nginx Ingress 介绍
Kubernetes 暴露服务的方式目前只有三种:LoadBlancer Service、NodePort Service、Ingress;前两种估计都应该很熟悉,具体的可以参考下 这篇文章;下面详细的唠一下这个 Ingress

Ingress 这个玩意,简单的理解就是 你原来要改 Nginx 配置,然后配置各种域名对应哪个 Service,现在把这个动作抽象出来,变成一个 Ingress 对象,你可以用 yml 创建,每次不要去改 Nginx 了,直接改 yml 然后创建/更新就行了;那么问题来了:”Nginx 咋整?”

Ingress Controller 这东西就是解决 “Nginx 咋整” 的;Ingress Controoler 通过与 Kubernetes API 交互,动态的去感知集群中 Ingress 规则变化,然后读取他,按照他自己模板生成一段 Nginx 配置,再写到 Nginx Pod 里,最后 reload 一下,工作流程如下图

当然在实际应用中,最新版本 Kubernetes 已经将 Nginx 与 Ingress Controller 合并为一个组件,所以 Nginx 无需单独部署,只需要部署 Ingress Controller 即可

Kubernetes实战:集群中部署NGINX Ingress Controller

ingress由两部分组成:ingress controller和ingress服务。
ingress controller通过和kubernetes api交互,动态的去感知集群中ingress规则变化,然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置,再写到nginx-ingress-control的pod里,这个Ingress controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,然后reload一下使配置生效。以此达到域名分配置和动态更新的问题。

从传统Paas到OAM入门篇
OAM 全称是 Open Application Model,从名称上来看它所定义的就是一种模型,同时也实现了基于 OAM 的我认为这种模型旨在定义了云原生应用的标准。

使用 kind 和 Docker 启动本地的 Kubernetes
这篇文章中,我将向你展示使用 kind 在单个 Docker 容器中启动一个集群的步骤。
结论
kind 对 minikube 来说是一个好的选择因为它只使用单个 Docker 容器。
通过跟集成到 Kubernetes 1.14 的 Kustomze 结合使用,在你本地的机器上尝试使用 Kubernetes 会更加简单。

【docker容器技术】如何选择存储驱动

Iass、Pass、SasS三种云服务区别

[Iass、Pass、SasS三种云服务区别]

IaaS:Infrastructure-as-a-Service(基础设施即服务)
PaaS:Platform-as-a-Service(平台即服务)
SaaS:Software-as-a-Service(软件即服务)

我们可以把云计算理解成一栋大楼,而这栋楼又可以分为顶楼、中间、低层三大块。
那么我们就可以把Iass(基础设施)、Pass(平台)、Sass(软件)理解成这栋楼的三部分。基础设施在最下端,平台在中间,软件在顶端。别的一些“软”的层可以在这些层上面添加。

21:27

knowledge is no pay,reward is kindness
0%