 Kubernetes 异常配置检测框架顾静, 阿里云 邓隽, 阿里云 Kubernetes 异常配置检测框架 我们来自阿里云容器服务 • 顾静,研发工程师 • 邓隽,技术专家 我们参与打造 • 容器服务(ACK/ASK) • 容器镜像服务(ACR) • 服务网格(ASM) • … 1 Kubernetes 典型异常 2 检测框架演进 3 生产实践 4 总结 Kubernetes 使用日常 • 应用部署 • API Server Pod Master API Server Pod Master API Server Pod Kubernetes 典型异常 网络异常 • 安全组、路由表配置错误 • 节点防火墙软件等修改 iptables、内核参数 • 网络链路长,手动排查成本高 异常影响 • 应用间无法正常通信 • 集群内 Controller 无法正常工作 YUM 安装自动运维工具 在集群中运行 CIS Benchmark 检测项依赖于 CIS Benchmark 内容 能发现集群核心组件配置错误 无法发现如 Flannel 组件异常 增加检查项流程较复杂 kuberhealthy 在集群中运行 CronJob 实现检查 可以自定义检查项 无法检测集群核心组件配置 集群异常时无法进行检测 kube-hunter 适用于集群安全检测 仅能检测集群安全性 kubectl-trace0 码力 | 31 页 | 9.57 MB | 1 年前3 Kubernetes 异常配置检测框架顾静, 阿里云 邓隽, 阿里云 Kubernetes 异常配置检测框架 我们来自阿里云容器服务 • 顾静,研发工程师 • 邓隽,技术专家 我们参与打造 • 容器服务(ACK/ASK) • 容器镜像服务(ACR) • 服务网格(ASM) • … 1 Kubernetes 典型异常 2 检测框架演进 3 生产实践 4 总结 Kubernetes 使用日常 • 应用部署 • API Server Pod Master API Server Pod Master API Server Pod Kubernetes 典型异常 网络异常 • 安全组、路由表配置错误 • 节点防火墙软件等修改 iptables、内核参数 • 网络链路长,手动排查成本高 异常影响 • 应用间无法正常通信 • 集群内 Controller 无法正常工作 YUM 安装自动运维工具 在集群中运行 CIS Benchmark 检测项依赖于 CIS Benchmark 内容 能发现集群核心组件配置错误 无法发现如 Flannel 组件异常 增加检查项流程较复杂 kuberhealthy 在集群中运行 CronJob 实现检查 可以自定义检查项 无法检测集群核心组件配置 集群异常时无法进行检测 kube-hunter 适用于集群安全检测 仅能检测集群安全性 kubectl-trace0 码力 | 31 页 | 9.57 MB | 1 年前3
 石墨文档Go在K8S上微服务的实践-彭友顺日志采集 加载配置 监控采集 资源隔离 故障转移 资源调度 权限控制 标准统一 运维简单 框架简单 编译 部署 应用开发 启动方式 日志采集 加载配置 监控采集 资源隔离 故障转移 资源调度 权限控制 编译 部署 2014年6月K8S开源 微服务的生命周期 第二部分 微服务的生命周期 开发 测试 部署 启动 调用 治理 微服务的开发阶段 配置 对接 Debug • 配置驱动 • 配置补齐 • 配置工具 统一配置、调用用方式,降低开发心智负担 • Proto的管理 • 错误码管理 • 调试gRPC • 调试信息 • 错误定位 问题:每种开源组件的配置、调用方式、debug方式、记录日志方式都不一样 微服务的开发阶段 问题:gRPC未设置连接错误,阻塞模式报错不正确 Redis、MySQL连接数配置未设置?超时未设置? 配置 对接 对接 Debug • 配置驱动 • 配置补齐 • 配置工具 • Proto的管理 • 错误码管理 • 调试gRPC • 调试信息 • 错误定位 // FailOnNonTempDialError only affects the initial dial, and does not do // anything useful unless you are also using WithBlock()0 码力 | 41 页 | 3.20 MB | 1 年前3 石墨文档Go在K8S上微服务的实践-彭友顺日志采集 加载配置 监控采集 资源隔离 故障转移 资源调度 权限控制 标准统一 运维简单 框架简单 编译 部署 应用开发 启动方式 日志采集 加载配置 监控采集 资源隔离 故障转移 资源调度 权限控制 编译 部署 2014年6月K8S开源 微服务的生命周期 第二部分 微服务的生命周期 开发 测试 部署 启动 调用 治理 微服务的开发阶段 配置 对接 Debug • 配置驱动 • 配置补齐 • 配置工具 统一配置、调用用方式,降低开发心智负担 • Proto的管理 • 错误码管理 • 调试gRPC • 调试信息 • 错误定位 问题:每种开源组件的配置、调用方式、debug方式、记录日志方式都不一样 微服务的开发阶段 问题:gRPC未设置连接错误,阻塞模式报错不正确 Redis、MySQL连接数配置未设置?超时未设置? 配置 对接 对接 Debug • 配置驱动 • 配置补齐 • 配置工具 • Proto的管理 • 错误码管理 • 调试gRPC • 调试信息 • 错误定位 // FailOnNonTempDialError only affects the initial dial, and does not do // anything useful unless you are also using WithBlock()0 码力 | 41 页 | 3.20 MB | 1 年前3
 k8s操作手册 2.3①k8s对系统要求 linux内核在3.10及以上,服务器规格2核cpu,2G内存及以上,可以装在虚拟机 里,也可以装在实体机上 ②规划主机名及ip k8s的服务器使用固定ip地址,配置主机名,要求能解析相应的主机名(master 结点)到对应的ip地址,可以使用内网集群的dns服务器或写入/etc/hosts文件 里。如: 主机名 ip地址 k8s-master1.cof-lee .conf文件及系统对外通信网口上配置有 默认路由;根据实际情况添加 # cat >> /etc/resolv.conf < k8s操作手册 2.3①k8s对系统要求 linux内核在3.10及以上,服务器规格2核cpu,2G内存及以上,可以装在虚拟机 里,也可以装在实体机上 ②规划主机名及ip k8s的服务器使用固定ip地址,配置主机名,要求能解析相应的主机名(master 结点)到对应的ip地址,可以使用内网集群的dns服务器或写入/etc/hosts文件 里。如: 主机名 ip地址 k8s-master1.cof-lee .conf文件及系统对外通信网口上配置有 默认路由;根据实际情况添加 # cat >> /etc/resolv.conf <- 配置selinux,则可关闭SELinux,若对安全性要求较高,则需自行配置 x,若对安全性要求较高,则需自行配置 # sed -i '/^SELINUX/s/enforcing/disabled/' /etc/selinux/config # setenforce 0 #关闭selinux ④ulimit设置 # cat >> vi /etc/security/limits.conf < 0 码力 | 126 页 | 4.33 MB | 1 年前3 第29 期| 2023 年9 月- 技术雷达Spring 91. Mockery 92. Netflix DGS 93. OpenTelemetry 94. Polars 95. Pushpin 96. Snowpark 评估 97. 基准配置文件 98. GGML 99. GPTCache 100. 语法性别 API 101. htmx 102. Kotlin Kover 103. LangChain 104. LlamaIndex 105 攻击路径分析 试验 攻击路径分析是一种分析和评估潜在攻击路径的安全分析方式,黑客可能按照这些来自组织内系统网络的潜在 攻击路径进行攻击。此前的多数安全分析策略或工具主要聚焦在特定分线领域,例如错误的配置,脆弱的容器, 和常见漏洞上。这些孤立的方法意味着团队们不能看到这些风险与技术栈上其他层的弱点组合产生的危险攻击 路径。尽管这一技术已提出一段时间,但是近期安全分析工具的进展能使安全团队更易使用这项技术。Orca 都提供了相应的支持程序,可以用来创建和配置这些服务,例如 Splunk、 Datadog、PagerDuty 和 New Relic。因此,我们建议团队除了云资源外,还应使用 Terraform 创建监控和告 警。这将实现更模块化的 IaC,更易于理解和维护。与所有 IaC 一样,同时使用多种方式进行配置变更,会带来 不一致的风险。所以,我们建议禁用通过用户界面和 API 的方式处理配置变更,确保 Terraform0 码力 | 43 页 | 2.76 MB | 1 年前3 第29 期| 2023 年9 月- 技术雷达Spring 91. Mockery 92. Netflix DGS 93. OpenTelemetry 94. Polars 95. Pushpin 96. Snowpark 评估 97. 基准配置文件 98. GGML 99. GPTCache 100. 语法性别 API 101. htmx 102. Kotlin Kover 103. LangChain 104. LlamaIndex 105 攻击路径分析 试验 攻击路径分析是一种分析和评估潜在攻击路径的安全分析方式,黑客可能按照这些来自组织内系统网络的潜在 攻击路径进行攻击。此前的多数安全分析策略或工具主要聚焦在特定分线领域,例如错误的配置,脆弱的容器, 和常见漏洞上。这些孤立的方法意味着团队们不能看到这些风险与技术栈上其他层的弱点组合产生的危险攻击 路径。尽管这一技术已提出一段时间,但是近期安全分析工具的进展能使安全团队更易使用这项技术。Orca 都提供了相应的支持程序,可以用来创建和配置这些服务,例如 Splunk、 Datadog、PagerDuty 和 New Relic。因此,我们建议团队除了云资源外,还应使用 Terraform 创建监控和告 警。这将实现更模块化的 IaC,更易于理解和维护。与所有 IaC 一样,同时使用多种方式进行配置变更,会带来 不一致的风险。所以,我们建议禁用通过用户界面和 API 的方式处理配置变更,确保 Terraform0 码力 | 43 页 | 2.76 MB | 1 年前3 K8S安装部署开放服务A. 准备主机/虚拟机 安装 k8s 集群需要至少 4 台主机/虚拟机,下面是参考配置: 1 台作为 k8s master CPU:2 核, 内存:8GB, 系统盘:40GB, docker 数据盘:80GB 3 台作为 k8s node CPU:2 核, 内存:16GB, 系统盘:40GB, docker 数据盘:40GB, ceph 数据盘:1TB *下面是 vSphere 上创建虚拟机的步骤: A1. 创建 k8s-master CPU:2 核, 内存:8GB,系统盘:40GB,docker 数据盘:80GB step1. 从模板上新建虚拟机 Step2. 配置虚拟机网络 打开虚拟机的控制台: 设置主机名: hostnamectl set-hostname k8s-master 设置网络: cd /etc/sysconfig/network-scripts 数据盘:40GB,ceph 数据盘:200GB 【注】所有节点(k8s-master, k8s-node1, k8s-node2, k8s-node3)均需做以下 B~D: B. 升级&配置 centos7 Step1. 升级 linux 内核 uname –r wget https://cbs.centos.org/kojifiles/packages/kernel/4.90 码力 | 54 页 | 1.23 MB | 1 年前3 K8S安装部署开放服务A. 准备主机/虚拟机 安装 k8s 集群需要至少 4 台主机/虚拟机,下面是参考配置: 1 台作为 k8s master CPU:2 核, 内存:8GB, 系统盘:40GB, docker 数据盘:80GB 3 台作为 k8s node CPU:2 核, 内存:16GB, 系统盘:40GB, docker 数据盘:40GB, ceph 数据盘:1TB *下面是 vSphere 上创建虚拟机的步骤: A1. 创建 k8s-master CPU:2 核, 内存:8GB,系统盘:40GB,docker 数据盘:80GB step1. 从模板上新建虚拟机 Step2. 配置虚拟机网络 打开虚拟机的控制台: 设置主机名: hostnamectl set-hostname k8s-master 设置网络: cd /etc/sysconfig/network-scripts 数据盘:40GB,ceph 数据盘:200GB 【注】所有节点(k8s-master, k8s-node1, k8s-node2, k8s-node3)均需做以下 B~D: B. 升级&配置 centos7 Step1. 升级 linux 内核 uname –r wget https://cbs.centos.org/kojifiles/packages/kernel/4.90 码力 | 54 页 | 1.23 MB | 1 年前3 运维上海2017-Kubernetes与AI相结合架构、落地解析-赵慧智由于采用系统当前的内核,Container会启动加载更快,更 轻量,并且更省资源。 Container Image 用来将需要容器化的应用程序及其环境进行打包后存储的镜像。 • 通常会有一个 Image 管理仓库来存储 Image。 • 同一个 Image 会有版本记录。 • 只包含软件环境的配置 • 硬件配置需要运行时去指定 OCI (Open Container 模型发布 AI Platform 本身的运行 • 1. 容器化 • 2. 对接 Kubernetes API,实现资源的分配与调度 • 3. 进行多 Kubernetes Cluster 的配置(需要进行跨集群的操 作 Caicloud TaaS 云平台 TensorFlow as a Service (TaaS) 平台专注于将Google级 AI 模型生成及服务工具TensorFlow打造成一个成熟的商业0 码力 | 77 页 | 14.48 MB | 1 年前3 运维上海2017-Kubernetes与AI相结合架构、落地解析-赵慧智由于采用系统当前的内核,Container会启动加载更快,更 轻量,并且更省资源。 Container Image 用来将需要容器化的应用程序及其环境进行打包后存储的镜像。 • 通常会有一个 Image 管理仓库来存储 Image。 • 同一个 Image 会有版本记录。 • 只包含软件环境的配置 • 硬件配置需要运行时去指定 OCI (Open Container 模型发布 AI Platform 本身的运行 • 1. 容器化 • 2. 对接 Kubernetes API,实现资源的分配与调度 • 3. 进行多 Kubernetes Cluster 的配置(需要进行跨集群的操 作 Caicloud TaaS 云平台 TensorFlow as a Service (TaaS) 平台专注于将Google级 AI 模型生成及服务工具TensorFlow打造成一个成熟的商业0 码力 | 77 页 | 14.48 MB | 1 年前3 Alluxio 助力 Kubernetes, 加速云端深度学习Pod Pod MXNet MXNet Pod Pod Caffe Caffe oss 阿里云 对象存储 statefulset daemonset 一键式部署Alluxio,中心化配置集群参数 $ cat << EOF > config.yaml properties: fs.oss.accessKeyId: xxx fs.oss.accessKeySecret: yyy default CACHE 默认的CACHE_PROMOTE会带来显著的性能开销 策略:1.优先本地加载缓存 2.避免数据震荡 3.避免数据冗余 1 2 3 3. Fuse性能调优 • 选择更高版本的kernel • 设置max_read=131072 • 定制libfuse2代码,支持配置Libfuse线程池 • 延长元数据缓存时间 建议 端到端的优化方案 1252.5 49810 码力 | 22 页 | 11.79 MB | 1 年前3 Alluxio 助力 Kubernetes, 加速云端深度学习Pod Pod MXNet MXNet Pod Pod Caffe Caffe oss 阿里云 对象存储 statefulset daemonset 一键式部署Alluxio,中心化配置集群参数 $ cat << EOF > config.yaml properties: fs.oss.accessKeyId: xxx fs.oss.accessKeySecret: yyy default CACHE 默认的CACHE_PROMOTE会带来显著的性能开销 策略:1.优先本地加载缓存 2.避免数据震荡 3.避免数据冗余 1 2 3 3. Fuse性能调优 • 选择更高版本的kernel • 设置max_read=131072 • 定制libfuse2代码,支持配置Libfuse线程池 • 延长元数据缓存时间 建议 端到端的优化方案 1252.5 49810 码力 | 22 页 | 11.79 MB | 1 年前3 Kubernetes开源书 -  周立12-Master与Node的通信 13-Node 14-Pod 15-Replica Set 16-Deployment 17-StatefulSet 18-Daemon Set 19-配置最佳实践 20-管理容器的计算资源 21-Kubernetes资源分配 22-将Pod分配到Node 23-容忍与污点 24-Secret 25-Pod优先级和抢占 26-Service 上,并结合了社区中最佳的创意和实践。 为什么使⽤容器 寻找你为啥要使⽤容器 的原因? 01-什么是Kubernetes 4 部署应⽤程序的旧⽅法是使⽤操作系统的软件包管理器在主机上安装应⽤程序。这种⽅式,存在可执⾏⽂件、配置、库 和⽣命周期与操作系统相互纠缠的缺点。⼈们可构建不可变的虚拟机映像,从⽽实现可预测的升级和回滚,但VM是重 量级、不可移植的。 新⽅法是部署容器,容器基于操作系统级别的虚拟化⽽不是硬件虚拟 持在Kubernetes上运⾏CI⼯作流,⽽不强制⼯作流如何⼯作。 允许⽤户选择其⽇志记录、监视和警报系统。(它提供了⼀些集成。) 不提供/授权⼀个全⾯的应⽤配置语⾔/系统(例如 jsonnet )。 不提供/不采⽤任何综合的机器配置、维护、管理或⾃愈系统。 另⼀⽅⾯,⼀些PaaS系统可运⾏在 Kubernetes上,例如 Openshift 、 Deis 、Eldarion 等。 您也可实现⾃⼰的定制0 码力 | 135 页 | 21.02 MB | 1 年前3 Kubernetes开源书 -  周立12-Master与Node的通信 13-Node 14-Pod 15-Replica Set 16-Deployment 17-StatefulSet 18-Daemon Set 19-配置最佳实践 20-管理容器的计算资源 21-Kubernetes资源分配 22-将Pod分配到Node 23-容忍与污点 24-Secret 25-Pod优先级和抢占 26-Service 上,并结合了社区中最佳的创意和实践。 为什么使⽤容器 寻找你为啥要使⽤容器 的原因? 01-什么是Kubernetes 4 部署应⽤程序的旧⽅法是使⽤操作系统的软件包管理器在主机上安装应⽤程序。这种⽅式,存在可执⾏⽂件、配置、库 和⽣命周期与操作系统相互纠缠的缺点。⼈们可构建不可变的虚拟机映像,从⽽实现可预测的升级和回滚,但VM是重 量级、不可移植的。 新⽅法是部署容器,容器基于操作系统级别的虚拟化⽽不是硬件虚拟 持在Kubernetes上运⾏CI⼯作流,⽽不强制⼯作流如何⼯作。 允许⽤户选择其⽇志记录、监视和警报系统。(它提供了⼀些集成。) 不提供/授权⼀个全⾯的应⽤配置语⾔/系统(例如 jsonnet )。 不提供/不采⽤任何综合的机器配置、维护、管理或⾃愈系统。 另⼀⽅⾯,⼀些PaaS系统可运⾏在 Kubernetes上,例如 Openshift 、 Deis 、Eldarion 等。 您也可实现⾃⼰的定制0 码力 | 135 页 | 21.02 MB | 1 年前3 破解 Kubernetes 应用开发困局-王炜破解 Kubernetes 应用开发困局 实时热加载和一键 Debug 2021.08.05 王炜 2 腾讯云 CODING DevOps 高级架构师 CNCF 大使 Nocalhost 项目负责人 自我介绍 1. K8s 环境开发困局 2. 主流云原生开发方式 3. 热加载原理 4. 开发和调试演示 5. 开源共建 目录 K8s 环境开发困局 01 开发举步维艰 到预期。 网络限制 Telepresence 局限性 (官网推荐的开发方式) 本地环境和容器、工作负载声明有很大的 差异,导致业务源码很难在本地运行。 1 1 热加载原理 03 实现容器内应用/进程热加载 1 3 从 Dockerfile 说起 Dockerfile CMD 或 ENTRYPOINT 定义容器启动命令 对应容器 PID=1 的进程 1 4 从 Dockerfile0 码力 | 20 页 | 3.58 MB | 9 月前3 破解 Kubernetes 应用开发困局-王炜破解 Kubernetes 应用开发困局 实时热加载和一键 Debug 2021.08.05 王炜 2 腾讯云 CODING DevOps 高级架构师 CNCF 大使 Nocalhost 项目负责人 自我介绍 1. K8s 环境开发困局 2. 主流云原生开发方式 3. 热加载原理 4. 开发和调试演示 5. 开源共建 目录 K8s 环境开发困局 01 开发举步维艰 到预期。 网络限制 Telepresence 局限性 (官网推荐的开发方式) 本地环境和容器、工作负载声明有很大的 差异,导致业务源码很难在本地运行。 1 1 热加载原理 03 实现容器内应用/进程热加载 1 3 从 Dockerfile 说起 Dockerfile CMD 或 ENTRYPOINT 定义容器启动命令 对应容器 PID=1 的进程 1 4 从 Dockerfile0 码力 | 20 页 | 3.58 MB | 9 月前3 ⾸云容器产品Kubernetes操作指南创建⽆状态应⽤nginx �. 配置容器 �. ⾼级配置 �. 创建成功 案例--如何创建⼀个WordPress ⽅法⼀:nodePort + Haproxy 外⽹访问 WordPress 配置⽅法 �. 创建 StorageClass、Namespace 和 pvc 资源 �. 部署MySQL容器组 �. 部署WordPress容器组 �. 配置 Haproxy 负载均衡 �. 访问 WordPress ⽅法⼆:Ingress 外⽹访问 WordPress 配置⽅法 �. 创建 Namespace 和 PVC 资源 �. 部署MySQL容器组 �. 部署WordPress容器组 �. 创建 Service �. 创建 Ingress �. Haproxy 策略配置上述 Ingress 与服务映射的 �� 端⼝ �. 访问 Wordpress 容器服务 Kubernetes 进⼊集群⻚⾯ -> 右上⻆点击创建集群 设置集群名称 -> 选择虚拟数据中⼼ -> 选择集群私⽹ip⽹段 -> 选择计费⽅式-> 设置master节点 - > 设置worker节点 -> 选择HA配置 -> 选择集群公⽹ip -> 设置集群ssh登录密码 -> 确认⽆误后点击 确认 2.使⽤须知 集群管理 1.简介 2.使⽤须知 3.操作说明 4 5 进⼊集群⻚⾯ -> 查看创建的集群,状态为正常代表创建成功0 码力 | 94 页 | 9.98 MB | 1 年前3 ⾸云容器产品Kubernetes操作指南创建⽆状态应⽤nginx �. 配置容器 �. ⾼级配置 �. 创建成功 案例--如何创建⼀个WordPress ⽅法⼀:nodePort + Haproxy 外⽹访问 WordPress 配置⽅法 �. 创建 StorageClass、Namespace 和 pvc 资源 �. 部署MySQL容器组 �. 部署WordPress容器组 �. 配置 Haproxy 负载均衡 �. 访问 WordPress ⽅法⼆:Ingress 外⽹访问 WordPress 配置⽅法 �. 创建 Namespace 和 PVC 资源 �. 部署MySQL容器组 �. 部署WordPress容器组 �. 创建 Service �. 创建 Ingress �. Haproxy 策略配置上述 Ingress 与服务映射的 �� 端⼝ �. 访问 Wordpress 容器服务 Kubernetes 进⼊集群⻚⾯ -> 右上⻆点击创建集群 设置集群名称 -> 选择虚拟数据中⼼ -> 选择集群私⽹ip⽹段 -> 选择计费⽅式-> 设置master节点 - > 设置worker节点 -> 选择HA配置 -> 选择集群公⽹ip -> 设置集群ssh登录密码 -> 确认⽆误后点击 确认 2.使⽤须知 集群管理 1.简介 2.使⽤须知 3.操作说明 4 5 进⼊集群⻚⾯ -> 查看创建的集群,状态为正常代表创建成功0 码力 | 94 页 | 9.98 MB | 1 年前3
共 44 条
- 1
- 2
- 3
- 4
- 5














