docker
  1. map json.Marshal()
  2. slice 并发问题
  3. string 并发读写问题

https://learnxinyminutes.com/

https://explainshell.com/ 解析 shell 语言

https://www.deepl.com/translator pdf 全文翻译

curl 转换成对应语言

container_memory_working_set_bytes > container_memory_rss; k8s 使用前者。

指标 说明
container_memory_cache 高速缓存(cache)的使用量。cache是位于CPU与主内存间的一种容量较小但速度很高的存储器,是为了提高cpu
container_memory_rss RSS内存,即常驻内存集(Resident Set Size),是分配给进程使用实际物理内存,而不是磁盘上缓存的虚拟内
container_memory_swap 虚拟内存使用量。虚拟内存(swap)指的是用磁盘来模拟内存使用。当物理内存快要使用完或者达到一定比例,就
container_memory_usage_bytes 当前使用的内存量,包括所有使用的内存,不管有没有被访问 (包括 cache, rss, swap等)。
container_memory_max_usage_bytes 最大内存使用量的记录。
container_memory_working_set_bytes 当前内存工作集(working set)使用量。(工作区内存使用量=活跃的匿名与和缓存,以及
container_memory_failcnt 申请内存失败次数计数
container_memory_failures_total 累计的内存申请错误次数。

其他定义: https://github.com/google/cadvisor/blob/master/docs/storage/prometheus.md

RSS内存,即常驻内存集(Resident Set Size),是分配给进程使用实际物理内存,而不是磁盘上缓存的虚拟内存。RSS内存包括所有分配的栈内存和堆内存,以及加载到物理内存中的共享库占用的内存空间,但不包括进入交换分区的内存。

container_memory_working_set_bytes 当前内存工作集(working set)使用量。

ingress controller 完成哪些工作 【南北向流量?】 第三方插件本身存在的,k8s 需要完成的(通过 configMap 配置):

  1. 负载均衡(一致性哈希,EWMA,roundbin,最小连接数) /会话保持(链路保持同一个请求,最好放到一个 nginx pod 中处理)
  2. 协议转换(语意转换,http->grpc)
  3. TLS 卸载与认证
  4. 文本压缩(Inter-QAT)
  5. 请求认证 Auth
  6. 限流限速
  7. WAF 防火墙?
  8. 全链路跟踪
  9. 日志上报

docker

  1. 容器镜像的本质 容器:视图被隔离、资源受限制的进程 管理虚拟机=管理基础设置;管理容器=管理应用本身

镜像:操作系统(k8s)的软件安装包

Pod: 进程组 #

为什么要抽象出 pod

  1. 单个容器中,启动多个进程会有 systemd 管理问题,不妨严格限定容器运行进程数量,再有pod管理容器数量
  2. 某些超亲密(频繁rpc、相互的网络感知)容器,必须运行在同一个物理机上

共享网络

  1. 每个 pod 会额外启动一个 InfraContainer(200kb的汇编程序) 方式共享网络
  2. 单个 pod 中的所有容器看到的网络设施完全一样
  3. 一个 pod 只有一个 ip 地址,只有一份网络资源,pod 中所有容器共享这份资源
  4. Pod 生命周期和 InfraContainer 完全一致,与自定义容器无关

共享存储

  1. share-data 对应在宿主机上的目录会被同时绑定到挂在进pod的容器中

容器设计模式 Sidecar :提供了一些 pod 设计模式 能力重用

  1. 环境初始化:InitContainer 启动比 spec.containers 早
  2. 日志收集:业务容器将日志写入 volume,日志容器共享此目录,并上报 Fluentd
  3. 代理容器:server mesh 的概念
  4. 适配器容器:给业务暴露出来的接口做格式转换

应用编排和管理 #

编排命令实现方式:

  1. 使用申明式API而非命令式 a. 合并多个变更 b. 幂等,可反复执行
  2. 使用多个异步控制器,轮询 yaml(通过 yaml status 无限向 spec 靠近的方式实现) 编排算子使用场景
  3. demonset 存储:ceph、glusterd;日志收集:fluentd,logstash;每个节点的监控收集
  4. cronjob 等

可观测性 #

  1. 健康状态、资源使用、应用实时日志 Liveness(健康指针) Readiness(就绪指针)

  2. 应用调试步骤 describe查看状态 -> 查看 event 日志 -> Pod 自身日志

  3. 应用远程调试

    1. Telepresence 将本地应用代理到集群的一个 Service 中去,
    2. Port-Forward 将远程的应用代理到本地端口上
    3. kubectl-debug 开源调试插件,侵入同名 pod 的 namespace
  4. 监控 资源监控(cpu mem 网络)、性能监控(apm 监控?gvm、zendengine hook、gc,网络连接)、安全监控(越权、漏洞)、事件监控(状态转换带来的 normal warnning 日志)

  5. 日志 主机内核日志、runtime 日志(docker containerd)、组件日志、应用进程日志 fluentd

网络概念及策略 #

Underlay Overlay(不需要像host网络申请) 是否与 Host 网络同层,perPodPerIp,一个ip一贯到底,清清楚楚 NICE

Runtime & RuntimeClass(kubernetes1.16) #

  1. rkt+docker -> CRI gVisor+kata

heapster

应用配置管理 #

这个是 ali 做的比较好的教程,一定要看 https://www.bilibili.com/medialist/play/349215109?from=space&business=space_series&business_id=1649328&desc=1&spm_id_from=333.999.0.0 https://edu.aliyun.com/lesson_1651_17055?spm=5176.10731542.0.0.536a7abdmVERGl#_17055

容器环境的设计模式:https://www.usenix.org/system/files/conference/hotcloud16/hotcloud16_burns.pdf

python 入门课程 https://space.bilibili.com/50233288/channel/seriesdetail?sid=2076829

git 入门教程 https://space.bilibili.com/50233288/channel/collectiondetail?sid=218773

bookmark: 阿里技术大牛 30 分钟讲透 Kubernetes : 调度和资源管理

架构设计 #

相关文档 基于容器的设计模式 https://www.usenix.org/system/files/conference/hotcloud16/hotcloud16_burns.pdf 4+1 设计蓝图 https://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf 软件架构描述 https://userweb.cs.txstate.edu/~rp31/papers/intro_softarch.pdf

  1. 深入了解容器隔离(namespace)和资源控制(cgroup)
  2. 容器数据卷实现方式 4.containerd 架构分析和工作原理解析

流程图怎么画

https://mermaid-js.github.io/mermaid/#/./flowchart?id=flowcharts-basic-syntax 在线:https://mermaid-js.github.io/mermaid-live-editor/edit#pako:eNpVkE1qw0AMha8itGohvoAXhcZOswmk0Ow8WQiPnBmS-WEsU4Ltu3dct5BoISS97wmkEdugGUu8JIoGTrXykOO9qUyyvTjqz1AUb9OeBVzwfJ9g-7IP0JsQo_WX15XfLhBU42HBGMRYf51Xqfr1Hz1PUDcHihLi-VE5fYcJdo39NHn9s2ISZ9dH01HZUdFSgorSH7Jk3KDj5MjqfMC4TBSKYccKy1xq7mi4iULl54wOUZPwTlsJCUtJA2-QBglfd9_-9ytTW8rvcOtw_gEDaF2R

pivot search http://www.artfulsoftware.com/infotree/qrytip.php?id=78 auto pivot table: https://www.artfulsoftware.com/infotree/qrytip.php?id=523&m=0 common https://www.artfulsoftware.com/infotree/queries.php

不展示 golang vendor 目录 #

.gitattributes

1
2
3
* text=auto

vendor/* -diff