docker学习

从应用开发角度认识 K8S

2020-11-19  本文已影响0人  阿里云云栖号

简介:刘晨 Lorraine 坐标Fintech,精通持续集成与发布,曾具有全平台100+应用持续部署持续发布实战经验,现在立志于成为K8S玩家。

云原生应用

我们正经历从单体应用转向分布式微服务架构应用的技术趋势。分布式微服务架构作为越来越多的软件开发设计模式,以领域设计模型来指导业务需求的抽象与封装。对业务的实体抽象还是边界划分,会以微服务架构作为落地点,形成微服务集群。并实施运行在云原生编排平台。

image

云原生应用结构 from Kubernetes-Patterns

云原生应用的基石是干净整洁,业务逻辑相对单一,并与其他领域对象独立的代码实现。这一阶段保证业务质量的主要是编程基本功,以及高覆盖率的自动化测试能力。

用OOP方式解读K8S

对于应用开发者,面向对象模式想必了然于胸。OOP设计了一套对一个逻辑对象的生命周期管理的方法论,类比OOP思路,笔者接下来详细介绍一些K8S核心资源对象以及应用方式。

image

OOP vs K8S from Kubernetes-Patterns

构建/部署保持隔离性Pod/Deployment

Image

容器镜像类比OOP的类,定义了一个模块的全部属性与功能,提供了唯一暴露在外的API调用方式以及参数集合,对应着一个独立完整的发布周期,就像容器的设计蓝图。这种静态定义方式,可以定义并初始化容器进行,使其在任意环境任意时刻行为完全一致。一个容器镜像对应着一个微服务,属于开发团队的产物。

Container

容器类比OOP的对象,是容器镜像的运行态。一个容器是一个容器镜像的运行进程,而一个容器镜像则可以在任意时刻任意环境下创建任何数量容器。

Pod

<pre class="public-DraftStyleDefault-pre" data-offset-key="f1edu-0-0" style="margin: 1.4em 0px; padding: 0.88889em; font-size: 0.9em; word-break: normal; overflow-wrap: normal; white-space: pre; overflow: auto; background: rgb(246, 246, 246); border-radius: 4px; color: rgb(18, 18, 18); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

<pre class="Editable-styled" data-block="true" data-editor="7j3a4" data-offset-key="f1edu-0-0" style="margin: 0px; padding: 0px; font-size: 0.9em; word-break: normal; overflow-wrap: normal; white-space: pre; overflow: initial; background: rgb(246, 246, 246); border-radius: 0px;">

apiVersion: v1

kind: Pod

metadata:

name: index-helm-57677c549-lgww5

namespace: bss-dev

spec:

containers:

- command:

    - java

    - '-jar'

    - /home/demo/app.jar

  env:

    - name: aliyun_logs_release_tags

      value: revision=3f44253.20201030-1039

  image: 'registry-vpc.cn-shanghai-finance-1.aliyuncs.com/XXX/XXX.XXX:latest'

  imagePullPolicy: Always 

</pre>

</pre>

NameSpace

Deployment

构造器InitContainer

组合模式Sidecar

配置管理ConfigMap/Secret

异步/并发执行Job/Cronjob

结语

笔者整理了一部分K8S基础知识点的初衷是为了审视一下K8S这个庞大的技术栈里开发者掌握和使用K8S所要了解的最小知识点集合。笔者相信未来的应用都是建立在云之上,所以不论是哪个角色,都得掌握必要的K8S知识点才能流畅地开启云原生开发之旅。

作者:中间件小哥

原文链接

本文为阿里云原创内容,未经允许不得转载

上一篇 下一篇

猜你喜欢

热点阅读