资讯专栏INFORMATION COLUMN

开源容器编排引擎Kubernetes

IT那活儿 / 2171人阅读
开源容器编排引擎Kubernetes

主要内容:

K8s介绍

K8s组件介绍

K8s中zookeeper集群部署

K8s常见故障及处理方法


一. K8s介绍

kubernetes是一种开源的容器编排工具,通过调度系统维持用户预期数量和状态的容器正常运行。kubernetes提供的功能:

1. 服务发现和负载均衡

Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果到容器的流量很大,Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。

2. 存储编排

Kubernetes 允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等

3. 自动部署和回滚

您可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态更改为所需状态。例如,您可以自动化 Kubernetes 来为您的部署创建新容器,删除现有容器并将它们的所有资源用于新容器。

4. 自我修复

Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。

5. 密钥与配置管理

Kubernetes 允许您存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。您可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

K8s架构图


二. k8s组件介绍

1.  etcd

etcd 是兼具一致性和高可用性的键值数据库,用于存储K8S中资源对象,如集群中Pod,Node等状态以及配置数据等。生产中需要对etcd进行高可用部署,通常为三个节点到七个节点之间的奇数节点,并且需要定期进行数据备份。etcd各个节点使用raft共识算法进行数据复制。当节点数量过多会导致仲裁和数据复制的效率降低!

在kubernetes集群中,仅apiserver会和etcd集群进行通信。在k8s集群中,etcd的性能至关重要!

2. master组件

master和node是两个逻辑上节点,当服务器资源充足时,可以将其分开在不同的机器上部署,当服务器资源不足时,也可以放到同一台机器上部署。master节点在部署的时候必须要考虑高可用方案,至少部署两个master。

  • apiserver

主节点上负责提供 Kubernetes API 服务的组件;它是 Kubernetes 控制面的前端。是整个集群中资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制。

apiserver提供了集群管理的restful api接口(鉴权、数据校验、集群变更等),负责和其它模块之间进行数据交互,承担了通信枢纽功能。

apiserver是无状态的,可以横向扩展,当存在多个apiserver时,前端会采用LB作为负载均衡,如Nginx,LVS,ELB等

  • controller manager

controller manager 译为“控制器管理器”,k8s内部有很多资源控制器,比如:Node Controller、Replication Controller、Deployment Controller、Job Controller、Endpoints Controller等等,为了降低复杂度,将这些控制切都编译成了一个可执行文件,并且在同一个进程中运行。controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。

controller-manager 虽然允许同时运行多个实例,但是只有一个能成为leader,并处理控制器的请求。controller-manager 锁对象存储在 kube-system 名称空间下的 kube-controller-manager endpoints对象中。

  •  scheduler

调度器组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。调度决策考虑的因素包括单个 Pod 和 Pod 集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限。

3. node组件

  • kublet

一个在集群中每个节点上运行的代理,kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs 中描述的容器处于运行状态且健康。kubelet 不会管理非 Kubernetes 创建的容器。

  • kube-porxy

kube-proxy 是集群中每个节点上运行的网络代理,是实现service资源功能组件之一。kube-proxy 建立了pod网络和集群网络之间的关系,即 cluster ip 和 pod ip 中间的关系。不同node上的service流量转发规则会通过kube-proxy进行更新,其实是调用apiserver访问etcd进行规则更新。

service流量调度方式有三种方式: userspace(废弃,性能很差)、iptables(性能差,复杂)、ipvs(性能好,转发方式清晰)。

  •  container runtime

即容器运行环境,Kubernetes 支持多个容器运行环境: Docker、 containerd、cri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)。常用的是Docker CE。


三. K8s中zookeeper集群部署

ZK集群是有状态的服务,其选择Leader的方式和ETCD类似,要求集群节点是不低于3的奇数个。

1. 安装JDK

2. 配置DNS解析

3. 安装zk


四. K8s常见故障及处理方法

  • 节点初始化报错

解决方法:

通过 echo 1 > /proc/sys/net/ipv4/ip_forward

  • kubectl get 报错

解决方法:

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config


END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129865.html

相关文章

  • docker + kubernetes=共生?相爱相杀?

    摘要:二月份,微软正式加入支持的行列,宣布容器服务支持。去年月,在亚马逊弹性容器服务首次亮相。是年的最后一次重大更新,于月日正式推出。值得注意的公告包括亚马逊网络服务于八月份以白金会员最高级别加入了。 2017年的云计算市场,有一个领域获得了空前的关注 -- Kubernetes。 Kubernetes可以追溯到2014年,当时Google公开发布了该项目的开源代码。2017年,Kubern...

    bovenson 评论0 收藏0
  • docker + kubernetes=共生?相爱相杀?

    摘要:二月份,微软正式加入支持的行列,宣布容器服务支持。去年月,在亚马逊弹性容器服务首次亮相。是年的最后一次重大更新,于月日正式推出。值得注意的公告包括亚马逊网络服务于八月份以白金会员最高级别加入了。 2017年的云计算市场,有一个领域获得了空前的关注 -- Kubernetes。 Kubernetes可以追溯到2014年,当时Google公开发布了该项目的开源代码。2017年,Kubern...

    tain335 评论0 收藏0
  • Docker和rkt快别争了,k8s才是容器生态的中心

    摘要:在这一假设之下,是一个新奇的观点编排才是容器生态的中心,而引擎就我们所知,只是一个开发工具。是特有的概念,但容器生态系统必须采用这个概念。 showImg(https://segmentfault.com/img/remote/1460000007157260?w=640&h=480); 开源项目 CRI-O ,其前身为 OCID ,官方简介是 OCI-based implementa...

    NSFish 评论0 收藏0
  • 剑指Kubernetes 揭秘腾讯云的PaaS技术选型策略

    摘要:腾讯云在年底决定开发容器产品随后组建容器技术团队并进行技术选型通过对不同编排工具的分析对比最终选择作为容器编排引擎并且迅速在年初推出容器解决方案为用户提供托管的一站式服务。但是腾讯云最终选择了现在看来这个选择无比正确。Kubernetes 很火,一大批互联网公司早已领先一步,搭建起专有的 PaaS平台,传统企业们看到的 Kubernetes的趋势,亦不甘落后,在试水的道上一路狂奔。虽然,Ku...

    icattlecoder 评论0 收藏0
  • InfoQ:Docker的第二次死亡

    摘要:面对平台化的竞争,推出了调度引擎,但从未真正流行起来,因为整个行业更倾向于采用,这是第一次死亡它失去了平台之战。左耳朵耗子说过一段话,让人深以为然:我清楚地看到了 Go 和 Docker 这两种技术的生态圈发展过程。让我收获最大的并不是这些技术本身,而是技术的变迁和行业的发展。从中,我看到了非常具体的各种思潮和思路,这些更有价值...... 这些关键新技术,可以让你拿到技术的先机。这些对一个...

    Tecode 评论0 收藏0
  • 容器容器编排

    摘要:从容器到容器编排平台以及周边生态系统包含很多工具来管理容器的生命周期。终止运行中的容器。发现在由运行于多个主机上的容器组成的分布式部署容器发现至关重要。类似的,当容器崩溃时,编排工具可以启动替换。 从容器到容器编排 Docker平台以及周边生态系统包含很多工具来管理容器的生命周期。例如,Docker Command Line Interface(CLI)支持下面的容器活动: 从注册表...

    Hydrogen 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<