Cloud Native Foundation - Overview
基本概念 在包括公有云、私有云、混合云等动态环境中构建和运行规模化应用的能力 云原生是一种思想,是技术、企业管理方法的集合 技术层面 应用程序从设计之初就为在云上运行而做好准备 云平台基于自动化体系 流程层面 基于 DevOps CI/CD 基于多种手段 应用容器化封装 服务网格 不可变基础设施 声明式API - 核心 + 标准 意义 提升系统的适应性、可管理性、可观测性 使工程师能以最小成本进行频繁和可预测的系统变更 提升速度和效率,助力业务成长,缩短I2M(Idea to Market) 核心项目
Web -- SAML
背景 近期工作与SAML相关,用Wireshark抓包,记录下相关网络包,以作备忘 案例:https://opendistro.github.io/for-elasticsearch-docs/docs/security/configuration/saml/ Wireshark文件:https://web-1253868755.cos.ap-guangzhou.myqcloud.com/uPic/saml.pcapng Bootstrap Login Logout
Web -- Cookie
背景 之前的工作接触Cookie相关的内容比较少,故记录下相关领域知识,以作备忘 Cookie是什么 Cookie是浏览器存储在用户电脑上的一小段文本文件 Cookie为纯文本格式,不包含任何可执行的代码 一个Web页面或者服务器告知浏览器按照一定规范来存储Cookie,并在随后的请求中将这些信息发送至服务器 Web服务器可以通过使用这些信息来识别不同的用户 大多数需要登录的网站在用户验证成功后都会设置一个Cookie 只要该Cookie存在并且合法,用户就可以自由浏览该网站的任意页面 创建Cookie12345== HTTP ResponseSet-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]== HTTP RequestCookie: value Web服务器通过发送一个名为Set-Cookie的HTTP的Header来创建一个Cookie value:通常为name=value的格式 通过Set-Cookie指定的可选项只会在浏览器端使用,而不会被再次发送至服务器 Cookie会在...
应用配置管理
Pod 配置管理 Key Value 独立资源 ConfigMap Secret ServiceAccount Pod.spec Resources SecurityContext InitContainers ConfigMap用途 管理容器运行时所需要的配置文件、环境变量、命令行参数等可变配置 用于解耦容器镜像和可变配置,从而保证工作负载(Pod)的可移植性 创建指定键值对12345678910111213141516$ kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charmconfigmap/special-config created$ kubectl get configmaps special-config -o yamlapiVersion: v1data: special.how: very special.type: charmkind: ConfigMapmetadata: ...
应用编排与管理 -- DaemonSet
作用 保证集群内每一个或者一些节点都运行一组相同的 Pod 跟踪集群节点状态,保证新加入的节点自动创建对应的 Pod 跟踪集群节点状态,保证移除的节点删除对应的 Pod 跟踪 Pod 状态,保证每个节点 Pod 处于运行状态 实践YAML 文件ds.yaml12345678910111213141516171819apiVersion: apps/v1kind: DaemonSetmetadata: name: fluentd-elasticsearch namespace: kube-system labels: k8s-app: fluentd-loggingspec: selector: matchLabels: name: fluentd-elasticsearch template: # Pod Template metadata: labels: name: fluentd-elasticsearch spec: containers: - name: fluentd-elasticsearch...
应用编排与管理 -- Job + CronJob
Job作用 创建一个或多个 Pod 来确保指定数量的 Pod 可以成功地运行终止 跟踪 Pod 状态,根据配置及时重试失败的 Pod 确定依赖关系,保证上一个任务运行完毕后再运行下一个任务 控制任务并行度,并根据配置确保 Pod 队列大小 实践YAML 文件job.yaml123456789101112131415161718apiVersion: batch/v1kind: Jobmetadata: name: pispec: backoffLimit: 4 # 重试次数 template: # Pod Selector spec: containers: - name: pi image: perl ports: null command: - perl - '-Mbignum=bpi' - '-wle' - print bpi(2000) restartP...
应用编排与管理 -- Deployment
作用每个 Deployment 管理一组相同的应用 Pod(相同的一个副本) 实践YAML 文件nginx-deployment123456789101112131415161718192021apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 3 # 期望的 Pod 数量 selector: # Pod Selector matchLabels: app: nginx template: # Pod Template metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 查看 Deployment123456789$ kubectl g...
应用编排与管理 -- 核心原理
资源元信息Kubernetes资源对象 Spec(specification):期望的状态 Status:观测到的状态 Metadata:元数据 Labels:识别资源 Annotations:描述资源 OwnerReference:描述多个资源之间的相互关系 Labels 标识型的 KV 元数据 标签名包含域名前缀:用来描述打标签的系统和工具 作用 用于筛选资源 唯一的组合资源的方法 可以使用 Selector 来查询(类SQL) Selector Pod Tie Env pod1 front dev pod2 back prod pod3 front test pod4 back gray 相等型 可以包含多个相等条件,多个相等条件之间是逻辑与的关系,如Tie=front, Env=dev命中 pod1 集合型 Env in (test, gray):命中 pod3 和 pod4 Tie notin (front, back):无命中 其他 release:存在 release 标签 !release:不存在 release 标签 相等型和...
Kubernetes -- Pod + 容器设计模式
基本概念容器 ► Pod ► Kubernetes 容器:一个视图被隔离、资源受限制的进程 容器 PID=1 的进程为应用本身(管理容器 = 管理应用) Pod:进程组 Kubernetes:操作系统 容器镜像:软件安装包 进程组 容器是单进程模型(容器 == 应用 == 进程,只能管理 PID=1 的进程,并不是说容器内只能运行一个进程) 容器内 PID=1 的进程为应用进程,本身不具备进程管理能力 如果将 PID=1 的进程改为 systemd,导致:管理容器 = 管理systemd != 管理应用 因此需要引入 Pod 原子调度单位紧密协作:必须部署在同一台机器上并共享某些信息 关系 亲密关系 – 调度解决 两个应用(Pod)需要运行在同一台宿主机上 超亲密关系 – Pod 解决 会发生直接的文件交换 使用 localhost 或者 Socket 文件进行本地通信 会发生非常频繁的 RPC 调用 会共享某些 Linux Namespace 实现机制解决的...
Kubernetes -- 核心概念
核心功能 Kubernetes是工业级容器编排平台,源于希腊语,意为『舵手』、『飞行员』 Kubernetes是自动化的容器编排平台:部署、弹性、管理 核心功能 服务发现与负载均衡 容器自动装箱(调度) 存储编排 自动容器恢复 自动发布与回滚 配置与密文管理 批量执行(Job) 水平伸缩(弹性) 调度Placement(红色容器):调度器观察正在被调度容器的大小,为其寻找一个能满足其资源需求的节点 自动恢复 将失败节点上的容器迁移到健康节点 水平伸缩 架构 Master 组件 职责 扩展性 API Server 用来处理 API 操作Kubernetes中所有组件都会与 API Server 进行连接组件与组件之间一般不进行独立的连接,依赖于 API Server 进行消息的传送 水平扩展 Controller 用来完成集群状态的管理(如自动恢复、水平扩张等) 热备 Scheduler 用来完成调度操作 热备 etcd 分布式存储系统,用来存储 API Server 所需要的元数据本身为高可用系统,可以保证 Master 组件的高可用性 Node Nod...












