K8s简单介绍

本文详细介绍了Kubernetes(K8S),包括其用于容器化应用部署、管理和扩展的功能,如自我修复、弹性伸缩、服务发现。深入探讨了K8S集群架构,包括Master节点的kube-apiserver、kube-controller-manager、kube-scheduler,以及Node节点的kubelet、kube-proxy和容器引擎。还涵盖了K8S核心概念和常见的部署方式。

一、K8S简介

1、Kubernetes 是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S。
2、K8S用于容器化应用程序的部署,扩展和管理。
3、K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等-一系列功能。
4、Kubernetes目标是让部署容器化应用简单高效。

官方网站: http://www.kubernetes.io

二、K8S集群架构与组件

1、自我修复

在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量:杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。

2、弹性伸缩

使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。

3、自动部署和回滚

K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保业务升级不受影响。

4、服务发现和负载均衡

K8S为多个容器提供一个统一访问入口 (内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。

5、机密和配置管理

管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用。

6、存储编排

挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储 (如NFS、GlusterFS、 Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。

7、批处理

提供一次性任务,定时任务;满足批量数据处理和分析的场景。

三、Kubernetes集群架构与组件

在这里插入图片描述
在这里插入图片描述

1、Master节点

(1)kube-apiserver

Kubernetes API,集群的统一入口, 各组件协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给 API Server 处理后再提交给Etcd存储。

(2)kube-controller-manager

处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的。
由一系列控制器组成,通过API Server 监控整个集群的状态,并确保集群处于预期的工作状态,比如当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

这些控制器主要包括:
●Node Controller(节点控制器):负责在节点出现故障时发现和响应
●Replication Controller (副本控制器) :负责保证集群中一个RC (资源对 象Replication Controller) 所关联的Pod
副本数始终保持预设值。可以理解成确保集群中有且仅有N个Pod实例,N是RC中定义的Pod副本数量
●Endpoints Controller (端点控制器) :填充端点对象 (即连接Services 和Pods) ,负责监听 Service 和对应的Pod副本的变化
可以理解端点是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道它的endpoint
●Service Account & Token Controllers ( 服务帐户和令牌控制器) :为新的命名空间创建默认帐户和API访问令牌
●ResourceQuota Controller(资源配额控制器):确保指定的资源对象在任何时候都不会超量占用系统物理资源
●Namespace Controller ( 命名空间控制器) :管理namespace的生命周期
●Service Controller

### Docker 简介 Docker 是一个开源的应用容器引擎,允许开发者将应用程序及其依赖打包到一个可移植的容器中,然后可以在任何支持 Docker 的环境中运行。这种特性使得 Docker 成为了现代软件开发和部署中不可或缺的一部分。通过使用 Docker,开发者可以确保他们的应用在不同的环境中表现一致,从而减少了“在我的机器上可以运行”的问题。 Docker 容器与传统的虚拟机相比,具有更轻量级的特点,因为它们共享主机系统的内核,而不需要为每个应用提供一个完整的操作系统[^2]。 ### Kubernetes (K8s) 简介 Kubernetes,通常简称为 K8s,是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。随着 Docker 容器技术的普及,人们开始面临如何管理和编排大量容器的问题。Kubernetes 正是为了应对这一挑战而设计的。它提供了一种方法来管理容器化应用的生命周期,包括部署、维护和扩展。 Kubernetes 的核心概念之一是 Pod,它是集群中运行的一个进程,内部可以封装一个或多个紧密相关的容器。此外,Kubernetes 还提供了 Service 的概念,用于定义一组提供相同服务的 Pod 的对外访问接口,从而实现了负载均衡和服务发现的功能[^3]。 ### Docker 和 Kubernetes 的关系 尽管 Docker 和 Kubernetes 都是容器技术的一部分,但它们各自扮演的角色有所不同。Docker 主要负责创建和运行容器,而 Kubernetes 则负责管理这些容器的生命周期,包括自动化的部署、扩展和管理。简单来说,Docker 是用来创建容器的工具,而 Kubernetes 是用来管理这些容器的平台。 在实际应用中,Docker 和 Kubernetes 经常一起使用。Docker 提供了构建和运行容器的能力,而 Kubernetes 则提供了将这些容器部署到生产环境所需的编排能力。例如,可以通过编写 YAML 文件来描述应用的部署需求,然后使用 `docker-compose up` 命令或者 Kubernetes 的命令行工具 `kubectl` 来部署应用[^2]。 ```yaml # 示例:Kubernetes 部署文件 (deployment.yaml) apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值