Kube

【k8s】etcd集群took too long to execute慢日志告警问题分析

做~自己de王妃 提交于 2020-08-17 09:52:37
背景 目前 机器学习平台 后端采用k8s架构进行GPU和CPU资源的调度和容器编排。总所周知,k8s的后端核心存储使用etcd进行metadata持久化存储。机器学习平台采取[External etcd topology]( http://way.xiaojukeji.com/article/External etcd topology)结构进行etcd的HA部署。 etcd集群的稳定性直接关系到k8s集群和 机器学习平台 的稳定性。odin平台直接接入etcd集群的慢日志(etcd请求操作>100ms)告警,实时监控etcd的稳定性。 问题记录 2020-01-06 运维同学反馈2019年12月中旬etcd慢日志监控出现大量的告警记录,而且告警呈上升趋势。 2020-01-20 运维同学继续反馈etcd慢日志告警数量继续上涨,未呈现稳态趋势。 问题分析 2020-01-06 运维同学反馈告警问题时,当时怀疑etcd 集群磁盘latency性能问题,通过etcd metrics接口dump backend_commit_duration_seconds 和 wal_fsync_duration_seconds,latency区间在128ms。etcd官方文档 what-does-the-etcd-warning-apply-entries-took-too-long-mean

关于 Kubernetes 的这些原理,你一定要了解

拥有回忆 提交于 2020-08-17 07:42:20
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! kubernetes 已经成为容器编排领域的王者,它是基于容器的集群编排引擎,具备扩展集群、滚动升级回滚、弹性伸缩、自动治愈、服务发现等多种特性能力。 本文将带着大家快速了解 kubernetes ,了解我们谈论 kubernetes 都是在谈论什么。 kubernetes 架构 从宏观上来看 kubernetes 的整体架构,包括 Master、Node 以及 Etcd。 Master 即主节点,负责控制整个 kubernetes 集群。它包括 Api Server、Scheduler、Controller 等组成部分。它们都需要和 Etcd 进行交互以存储数据。 Api Server:主要提供资源操作的统一入口,这样就屏蔽了与 Etcd 的直接交互。功能包括安全、注册与发现等。 Scheduler:负责按照一定的调度规则将 Pod 调度到 Node 上。 Controller:资源控制中心,确保资源处于预期的工作状态。 Node 即工作节点,为整个集群提供计算力,是容器真正运行的地方,包括运行容器、kubelet、kube-proxy。 kubelet:主要工作包括管理容器的生命周期、结合 cAdvisor 进行监控、健康检查以及定期上报节点状态。 kube-proxy:

Kubernetes中pod详解

最后都变了- 提交于 2020-08-17 07:31:47
一、Namespace 1)Namespace概述 Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。 Namespace常用来隔离不同的用户,比如Kubernetes自带的服务一般运行在kube-system namespace中。 Kubernetes中的名称空间与docker中的名称空间不同。K8s中的名称空间只是做了一个逻辑上的隔离 2)Namespace常用的命令 查询: [root@master ~]# kubectl get namespaces //查看k8s存在的名称空间 NAME STATUS AGE default Active 5d4h kube-node-lease Active 5d4h kube-public Active 5d4h kube-system Active 5d4h [root@master ~]# kubectl describe namespaces default //查看名称空间详细信息 [root@master ~]#

第一次搭建kubernetes经历

情到浓时终转凉″ 提交于 2020-08-17 06:44:38
1.准备部署环境 master 192.168.40.162 node 192.168.40.220 2.下载部署包(从192.168.40.33复制部署包) scp /opt/kylincloud2_2.0_ft2000_v0.0.1.13_20200511.tar.gz root@192.168.40.162:/opt/ 3.免密认证 通过192.168.40.192对192.168.40.162及192.168.40.220做免密认证,即master节点对自身及所有node节点做免密认证 (1)ssh-keygen -t rsa (2)cat id_rsa.pub>>authorized_keys (3)chmod 710 authorized_keys (4)scp -r authorized_keys root@192.168.40.220:~/.ssh 4.时间同步 (1)ntpdate 192.168.40.253(此命令分别执行在master及node) 将192.168.40.162和192.168.40.220统一与192.168.40.253时间保持一致,即master及所有节点保持统一一致时间 (2)hwclock -w(此命令分别执行在master及node) 将软件时间写入硬件时间,硬件时间是BIOS的时间 5.根据需求修改default.yaml文件

kubernetes(六) 基于kubeadm构建高可用k8s集群

╄→尐↘猪︶ㄣ 提交于 2020-08-17 04:39:34
基于kubeadm构建高可用k8s集群 github地址: https://github.com/kubernetes/kubernetes/ 官方网站: kubernets.io 基于kubeadm创建k8s集群 基础概念 pod使用接口技术 CNI: container network interface CSI: container storage interface CRI: container runtime interface CVI: container volume interface pod:k8s中运行容器的最小单元 k8s如果向替换CRI的话(替换容器技术),只需要讲POD使用相关的容器技术(docker,podman)封装即可 service: 实现了从宿主机外层访问k8s内部不同的容器的访问方式,还实现了pod的动态发现;因此可以说Service是k8s内部的负载均衡器 实现方式: 早期是iptable,在1.11之后支持ipvs(轮训算法) replicationcontroller/deployment: 已废弃,POD控制器; 通过环境检测,保证pod的正常运行 k8s组成部分介绍 master: 主节点 kube-apiserver: https://k8smeetup.github.io/docs/admin/kube-apiserver/

如何在两个OpenShift集群间迁移有状态应用

对着背影说爱祢 提交于 2020-08-16 23:58:01
Portworx Kubemotion: 在OpenShift集群间迁移有状态应用 Portworx是一个支撑K8S有状态应用的持久存储和数据管理平台。通过Portworx,它为有状态应用提供了一个单一的数据管理层,从而用户可以在任何底层架构上运行类似数据库这样的有状态应用。Kubemotion是Portworx的核心功能之一,发布在Portworx企业版2.0中。它赋能K8S用户在集群间迁移应用和数据、备份和恢复、以及做蓝绿部署。(https://docs.portworx.com/portworx-install-with-kubernetes/migration/kubemotion/)下面我们介绍如何在红帽OpenShift集群之间,迁移有状态应用的持久卷和相关K8S资源。 背景 在企业客户中,一个常见的场景是:在一个云区域中运行研发测试环境,而在另一个云区域中运行生产环境。研发测试环境通常会选择距离开发团队比较近,以降低网络延迟,而生产环境则会选择离用户比较近。K8S的无状态应用迁移相对比较容易,但迁移有状态应用是一个挑战。在演示中,我们会在AWS位于美国东部(俄亥俄),和美国西部(俄勒冈)的两个数据中心的Openshift集群间,迁移K8S资源。美国东部区域(俄亥俄)部署的是研发测试环境,美国西部区域(俄勒冈)部署的是生产环境。在系统的测试环节完成后

第一章 Kubernetes进阶之Kubernetes简介

瘦欲@ 提交于 2020-08-16 22:36:23
  Kubernets是什么 Kubernets是Google在2014年开源的一个容器集群管理系统,简称k8s K8s用于容器化应用程序部署,扩展和管理 K8s提供了容器编排,资源编排,弹性伸缩,部署管理,服务发现等一系列功能 K8s的目标是让容器部署更加简单高效   Kubernets的特性 自我修复 弹性伸缩 自动部署和回滚 服务发现和负载均衡 机密和配置管理 存储编排 批处理   Kunernetes集群架构与组件   Master 组件:   kube-apiserver :   Kubernetes API 集群的统一入口,各组件的协调者,以RESTful API提供接口方式,所有的对象资源的   增删改查和监听操作都交给APIServer处理后再提交给etcd数据库做持久化存储   Kube-controller-manager   处理集群中常规后台任务,一个资源对应一个控制器,而controllerManager就是负责处理这些控制器的   kube-scheduler   根据调度算法为新创建的pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上   etcd   分布式键值存储系统,用于保存集群状态数据,比如Pod,Service等对象信息   Node组件:   kubelet:   kubelet

阿里云重磅发布云原生裸金属方案 | 云原生生态周报 Vol. 53

北战南征 提交于 2020-08-16 22:32:27
作者 | 王思宇、陈洁、陈有坤、宋净超 业界要闻 阿里云重磅发布云原生裸金属方案:裸金属 + 容器,解锁云计算的新方式 在 6 月 9 日 2020 阿里云线上峰会上,阿里云智能基础产品事业部高级研究员蒋江伟重磅发布了云原生裸金属方案。新一代容器服务 ACK,可以将最新神龙弹性裸金属实例的强大性能发挥得淋漓尽致,具备极致性能、高效调度、全面安全的特点。 为云研发而生,阿里巴巴发布新一代 DevOps 平台云效 6 月 9 日,2020 阿里云线上峰会于云端举行,阿里巴巴云研发部门负责人陈鑫出席峰会并发表题为《新云效,新 DevOps 平台》的主题演讲,宣布新一代企业级 DevOps 平台——阿里云·云效正式发布。 上游重要进展 StatefulSet volume resize 为 StatefulSet 增加支持调整 PVC resize 的能力。 fix: leaderelection graceful release doesn't work 解决 client-go 中提供的 leaderelection 存在优雅释放不 work 的问题。 Fix DS expectations on recreate 修复了 DaemonSet 控制器重建 Pod 时,expectations cache 中信息未清理的 BUG。 Fix kube-apiserver panic

K8S组件功能介绍

南楼画角 提交于 2020-08-16 19:28:34
Master: etcd分布式键值存储系统。用于保存集群状态,比如Pod、Service等对象信息 kube-controller-manager 负责维护集群状态如故障检测,自动更新处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的。 kube-scheduler 负责资源调度根据调度算法为新创建的Pod选择一个Node节点 kube-apiserver Kubernetes API,集群的统一入口,各组件协调者,以HTTPAPI提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储。 Node: Kubelet kubelet是Master在Node节点上的Agent,管理本机运行容器的生命周期也负责volueme和网络的管理,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器(CSI 存储CNI网络管理) kube-proxy 在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。 其他: Pod:Pod是最小部署单元,一个Pod由一个或多个容器组成,Pod中容器共享存储和网络,在同一台Docker主机上运行 Service : Service一个应用服务抽象

k8s对接外部ceph集群

白昼怎懂夜的黑 提交于 2020-08-16 16:04:00
为了部署有状态服务,单独给k8s部署了一套ceph块存储集群,本文记录了k8s集群对接外部ceph集群的方案和问题。期间,还是遇见不少坑,好在都解决了。 环境准备 我们使用的k8s和ceph环境见: https://blog.51cto.com/leejia/2495558 https://blog.51cto.com/leejia/2499684 静态持久卷 每次需要使用存储空间,需要存储管理员先手动在存储上创建好对应的image,然后k8s才能使用。 创建ceph secret 需要给k8s添加一个访问ceph的secret,主要用于k8s来给rbd做map。 1,在ceph master节点执行如下命令获取admin的经过base64编码的key(生产环境可以创建一个给k8s使用的专门用户): # ceph auth get-key client.admin | base64 QVFCd3BOQmVNMCs5RXhBQWx3aVc3blpXTmh2ZjBFMUtQSHUxbWc9PQ== 2,在k8s通过manifest创建secret # vim ceph-secret.yaml apiVersion: v1 kind: Secret metadata: name: ceph-secret data: key: