【云原生】Kubernetes介绍

简介: 【云原生】Kubernetes介绍

Kubernetes是一款 容器编排工具,以下 简称k8s(k到s中间有8个字母所以是k8s),为了更快的入门k8s我们首先要对k8s的一些概念有所了解。


K8s介绍


官方定义的k8s是能够对容器化软件进行部署和管理,也就是可以在不停机的情况下提供简单快速的发布和更新方式。简单点来说,**如果项目需要多机器节点的微服务架构,并且采用的是Docker进行容器化部署的,那么k8s就可以帮我们屏蔽集群的复杂性,自动选择最优资源分配方式进行部署。**k8s提供简单的多实例部署及更新方案,几个命令就可以实现。


回顾

为了理解Kubernetes的用处,我们先回顾部署应用的历史。


cc8bad22f4dfd2233af3cb41f951c958_e62e674f611e7a5ca97d18c4d48a1d3c.png


在部署应用上经历了以上三个时代:


  • 传统部署:应用直接部署到物理机上,缺陷很明显!有的应用占用资源多,有的占用资源少,这就造成了资源分配不均、利用率不足的情况。


  • 虚拟机部署:针对上述问题,虚拟化技术应运而生。用户可以在单台物理机的cpu上运行多个虚拟机。


  • 虚拟化技术使应用程序被虚拟机分开了,限制了应用程序之间的非法访问,进而提供了一定程序的安全
  • 提高了物理机的资源利用率,降低了硬件成本。
  • 每一个虚拟机可认为自己是被虚拟化的物理机上的一台完整机器。


  • 容器化部署时代:容器与虚拟机类似,它降低了隔离层级,共享了OS。所以,容器可以认为是轻量级的


  • 与虚拟机相似,每个容器都有自己的文件系统、CPU、内存、进程空间等。
  • 运行应用程序需要的资源都被容器包装
  • 容器化的应用可以跨OS发行版进行部署


k8s功能

  • 服务发现和负载均衡

k8s可以通过ip地址暴露容器的的访问方式,在同组容器中可实现负载均衡


  • 存储编排

k8s可以自动挂在指定的存储系统,nfs、云存储…


  • 自动发布和回滚

我们可以在k8s中声明应用程序容器应该达到的状态,K8s将以合适的速率调整容器的状态,并自动达到期望的效果


  • 自愈
  • 重新启动已经停机的容器
  • 在容器没有准备完成之前,不会让调用者发现该容器
  • 替换、kill掉不健康的容器


k8s的组件

Master组件

  • master组件是负责集群中的全局决策
  • master 组件探测并响应集群事件(当 Deployment 的实际 Pod 副本数未达到 replicas 字段的规定时,启动一个新的 Pod)


为了简介性,master组件运行在同一台机器上(master)


kube-apiserver

这个组件提供K8s的API。它属于k8s平台的前端,可以水平扩展也就是加服务器数量以提高性能。像后面会用到的kubectl/ kubernetes dashboard / kuboard 等k8s的管理工具其本质上就是调用了k8s的api实现了对k8s集群的管理。


etcd

存储组件,k8s集群相关的配置信息都存储在etcd里。更多信息可以看官方文档


kube-scheduler

此组件监控所有新创建尚未分配到节点上的 Pod,而且自动的为pod选择一个合适的节点运行


kube-controller-manager

就像它的名字一样,所有的控制器都被它管理


它包含的控制器有:


  • 节点控制器: 负责监听节点停机的事件并作出对应响应
  • 副本控制器: 负责为集群中每一个 副本控制器对象(Replication Controller Object)维护期望的 Pod 副本数
  • 端点(Endpoints)控制器:负责为端点对象(Endpoints Object,连接 Service 和 Pod)赋值
  • Service Account & Token控制器: 负责为新的名称空间创建 default Service Account 以及 API Access Token


cloud-controller-manager

cloud-controller-manager 中运行了与具体云基础设施供应商互动的控制器。


Node组件

Node 组件运行在每一个节点上(包括 master 节点和 worker 节点),负责维护运行中的 Pod 并提供 Kubernetes 运行时环境


kubelet

此组件是运行在每一个集群节点上的代理程序。它确保 Pod 中的容器处于运行状态。


kube-proxy

kube-proxy 是一个网络代理程序,运行在集群中的每一个节点上,是实现 Kubernetes Service 概念的重要部分。


kube-proxy 在节点上维护网络规则。这些网络规则使得您可以在集群内、集群外正确地与 Pod 进行网络通信。


容器引擎

容器引擎负责运行容器。


Addons

Addons 使用 Kubernetes 资源(DaemonSet、Deployment等)实现集群的功能特性。由于他们提供集群级别的功能特性,addons使用到的Kubernetes资源都放置在 kube-system 名称空间下。


DNS

除了 DNS Addon 以外,其他的 addon 都不是必须的,所有 Kubernetes 集群都应该有 Cluster DNS


Cluster DNS 是一个 DNS 服务器,是对您已有环境中其他 DNS 服务器的一个补充,存放了 Kubernetes Service 的 DNS 记录。


如果安装过K8s集群的话对这个组件会有印象


Web UI(Dashboard)

Dashboard (opens new window)是一个Kubernetes集群的 Web 管理界面。用户可以通过该界面管理集群。


ContainerResource Monitoring

将容器的度量指标(metrics)记录在时间序列数据库中,并提供了 UI 界面查看这些数据


Cluster-level Logging

将容器的日志存储到一个统一存储中,并提供搜索浏览的界面


Kuboard

Kuboard是一款基于Kubernetes的微服务管理界面,相较于 Dashboard,Kuboard 强调:


  • 无需手工编写 YAML 文件
  • 微服务参考架构
  • 上下文相关的监控
  • 场景化的设计
  • 导出配置
  • 导入配置


KubeSphere

KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统


提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
Kubernetes 负载均衡 Cloud Native
猿创征文|云原生|kubernetes二进制1.18单master扩展为多master
猿创征文|云原生|kubernetes二进制1.18单master扩展为多master
54 0
|
3月前
|
Kubernetes Cloud Native 调度
云原生技术专题 | 云原生容器编排问题盘点,总结分享年度使用Kubernetes的坑和陷阱
随着云原生的兴起,越来越多的应用选择基于Kubernetes进行部署,可以说Kubernetes 是最流行的容器编排和部署平台。它的强大功能特性,可以保障在生产中可靠地运行容器化应用程序,相关的DevOps等工具也应运而生,下面就是小编简单化了一个Kubernetes的逻辑架构图。
327 9
云原生技术专题 | 云原生容器编排问题盘点,总结分享年度使用Kubernetes的坑和陷阱
|
4月前
|
Kubernetes Cloud Native 应用服务中间件
云原生|kubernetes 你真的学废了吗---实战k8s 一(jsonpath实战)
云原生|kubernetes 你真的学废了吗---实战k8s 一(jsonpath实战)
67 0
|
13天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
17 4
|
1月前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
219 0
|
1月前
|
Kubernetes Cloud Native Devops
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
云原生技术落地实现之二KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (2/2)
51 1
|
1月前
|
弹性计算 运维 Kubernetes
云原生K8S场景自动化响应ECS系统事件
客户云原生K8S场景下,通过社区开源NPD+Draino+Autoscaler零开发,对接响应ECS主动运维事件,通过自动响应事件减少非预期宕机。
|
3月前
|
人工智能 Cloud Native PyTorch
阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践
阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践
148659 4
|
3月前
|
人工智能 Cloud Native 调度
为大模型工程提效,基于阿里云 ACK 的云原生 AI 工程化实践
本文主要介绍了解析云原生 AI 所遇到的技术挑战和应对方案,随后介绍云原生 AI 领域的关键技术与架构细节,最后分享我们在 ACK 的相关经验及工程实践。
|
4月前
|
Kubernetes 负载均衡 Docker
[面试题~k8s] 云原生必问基础篇
[面试题~k8s] 云原生必问基础篇
394 0

热门文章

最新文章