Kubernetes - Pod
|Word Count:4|Reading Time:1mins
描述
操作
Author: zhongmingmao
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles

2023-02-02
Kubernetes - Security
层次模型 开发 分发 部署 运行时 容器运行时Non-root 在 Dockerfile 中通过 USER 命令切换成非 root 用户 防止某些镜像窃取宿主的 root 权限并造成危害 在某些容器运行时,容器内部的 root 用户与宿主上的 root 用户是同一个用户 宿主上的重要文件被 mount 到容器内,并被容器修改配置 即使在容器内部也应该权限隔离 123FROM ubuntuRUN user add AUSER A User namespace 依赖 User namespace,任何容器内部的用户都会映射为宿主上的非 root 用户 默认关闭,因为会引入配置复杂性 系统不知道宿主用户与容器用户的映射关系,在 mount 文件时无法设置适当的权限 Rootless container 容器运行时以非 root 身份启动 即使容器被攻破,在宿主层面获得的用户权限也是非 root 用户 Docker 和其它容器运行时本身的后台 Daemon 需要以 root 身份运行,其它的用户容器才能以 rootless 身份运行 某些运行时,如 Podman,没有 Daemon 进程,...

2022-12-01
Kubernetes - Architectural principles
主要功能 基于容器的应用部署、维护和滚动升级 服务发现和负载均衡 跨机器和跨地区的集群调度 自动伸缩 无状态服务和有状态服务 插件机制保证扩展性 命令式 vs 声明式 YAML 命令式关注:如何做 声明式关注:做什么 核心对象 Kubernetes 的所有管理能力是构建在对象抽象的基础上 对象 描述 Node 计算节点的抽象 Namespace 资源隔离的基本单位 Pod 用来描述应用实例,最为核心的对象 Service 如何将应用发布为服务,本质上是负载均衡和域名服务的声明 核心架构 核心组件 Scheduler关注没有与 Node 绑定的 Pod,完成调度后,会将信息写入 etcd,而 kubelet 会监听到 Master 组件 描述 API Server API 网关 Cluster Data Store etcd:分布式 kv 存储,K8S 将所有 API 对象持久存储在 etcd Controller Manager 处理集群日常任务的控制器:节点控制器、副本控制器等 Scheduler 监控新建的 Pods 并将其分配给...

2022-11-05
Kubernetes - Monitor
Metrics Server 用来收集 Kubernetes 核心资源的指标,定时从所有 Node 的 kubelet 采集信息对集群的整体性能影响极小,性价比很高,每个 Node 大约只会占用 1m vCPU 和 2MB 内存 Metrics Server 调用 kubelet 的 API,获取到 Node 和 Pod 的指标,再将这些信息交给 API Serverkubectl 和 HPA 可以通过 API Server 来读取指标 Metrics Server 早期的数据来源是 cAdvisor,原先是一个独立的应用程序,后来被集成进 kubelet https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml --kubelet-insecure-tls 1234567891011121314151617apiVersion: apps/v1kind: Deploymentmetadata: labels: k8s-app: metrics-se...

2023-01-27
Kubernetes - Operator
应用接入应用容器化开销风险 Log Driver Blocking mode Non-Blocking mode 共享 Kernel 共享系统参数配置 进程数共享 fd 数共享 主机磁盘共享 资源监控应用视角 容器中看到的资源是主机资源 top Java Runtime.availableProcessors() cat /proc/cpuinfo cat /proc/meminfo df -k 影响应用 Java Concurrent GC Thread Heap Size 线程数不可控 判断规则 查询 /proc/1/cgroup 是否包含 kubepods 关键字 12345678910111213141516171819202122232425262728293031323334$ cat /proc/1/cgroup12:cpuset:/11:devices:/init.scope10:blkio:/init.scope9:freezer:/8:net_cls,net_prio:/7:pids:/init.scope6:pe...

2022-12-03
Kubernetes - API Server
概述 API Server 提供集群管理的 REST API 提供其它模块之间数据交互和通信的枢纽 其它模块通过 API Server 查询或者修改数据,只有 API Server 才能直接操作 etcd 访问控制:认证 + 鉴权 + 准入 Mutating Admission 可以修改对象,而 Validating Admission 不可以修改对象 认证 开启 TLS 时,所有请求都需要首先认证 Kubernetes 支持多种认证机制,并支持同时开启多个认证插件(只需要有 1 个认证通过即可) 如果认证成功,进入鉴权模块,如果认证失败,则返回 401 认证插件 X509 证书 在 API Server 启动时配置 --client-ca-file CN 域(CommonName)用作用户名,而O 域(Organization)则用作 Group 名 静态 Token 文件 在 API Server 启动时配置 --token-auth-file 采用 csv 格式:token,user,uid,[group...] 引导 Token 目的:为了支持平滑地启动...

2023-02-05
DevOps - IaC
IaC概述 使用代码定义基础设施(声明式:云资源、配置、工具安装) 借助 Git 实现对基础设施的版本控制 有状态 - Diff + Patch 优势 幂等 版本控制 使用 Git 进行变更管理(批准、安全检查、自动化测试) 清晰的变更行为 快速配置基础设施 能力 提供以编码工作流来创建基础设施 更改或者更新现有的基础设施 安全地更改基础设施 与 CICD 工具集成,形成 DevOps 工作流 提供可复用的模块,方便协作和共享 实施安全策略和生产标准 实现基础设施的团队协作 工具 Terraform Pulumi Crossplane Terraform核心架构 全新的配置语言 HCL - HashiCorp configuration language 可执行的文档 人类和机器可读 学习成本低 测试、共享、重用、自动化 适用于几乎所有云厂商 HCL 最终转换为 JSON 对象,再与云厂商交互 JSON 123456789101112131415161718{ "io_mode": "async", "service...
Announcement
Things are always unexpected!






