本篇博客是博主学习 Kubernetes 的实践总结。

1.基础概念
Kubernetes 是一个可移植的、可扩展的、用于管理容器化工作负载和服务的开源平台,它简化(促进)了声明式配置和自动化。它有一个庞大的、快速增长的生态系统。Kubernetes 的服务、支持和工具随处可见。
Kubernetes 一词源于希腊语,意为舵手或飞行员。 2014 2014 2014 年,谷歌开放了 Kubernetes 项目的源代码。Kubernetes 基于谷歌在大规模运行生产工作负载方面的 15 15 15 年经验,以及来自社区的最佳想法和实践。
| 序号 |
|
|---|---|
| 1 | Kubernetes 概述 |
| 2 | 微内核的分布式操作系统 Kubernetes |
| 3 | Pod、Container、Node、Cluster |
2.Pod 详解
Pod 是 Kubernetes 中的一个 逻辑单位,它代表集群中正在运行的一个进程,是 Kubernetes 集群中的一个应用实例,由一个或者多个容器组成。在 Pod 中还可以包含数据的持久化存储、网络配置等资源。Pod 支持多种容器的执行环境,而 Docker 则是 Pod 最常见的 执行环境。Pod 也支持用其他容器引擎作为执行环境。
| 序号 |
|
|---|---|
| 1 | Pod 的概念、使用方法、容器类型 |
| 2 | Pod 的生命周期(一):Pod 阶段与状况、容器的状态与重启策略 |
| 3 | Pod 的生命周期(二):Pod 的健康检查之容器探针 |
| 4 | Pod 状态速查表 |
| 5 | Pod 的调度策略 |
| 6 | Pod 资源调度之亲和性调度 |
| 7 | Pod 驱逐 |
| 8 | Pod 的配置管理(一):ConfigMap |
| 9 | Pod 的配置管理(二):Secret |
3.Deployment 控制器
Kubernetes 通过创建 控制器 来管理 Pod 的生命周期。为了满足不同需求的场景,Kubernete 提供了不同的控制器,如 Deployment、DaemonSet、Job、CronJob、StatefuleSet 等。
| 序号 |
|
|---|---|
| 1 | Deployment 控制器 |
| 2 | Deployment 的创建和使用(实战) |
| 3 | Deployment 的状态 |
| 4 | Deployment 的清理策略及编写规则 |
| 5 | 应用的部署(一):金丝雀部署 |
| 6 | 应用的部署(二):蓝绿部署 & 滚动部署 |
4.Service 服务
在 Kubernetes 中部署的应用可能对应一个或者多个 Pod,而每个 Pod 又具有独立的 IP 地址。Service(服务)能够为一组功能相同的 Pod 提供统一不变的访问地址,使得集群具有稳定的 IP 地址(即 Cluster IP 地址),从而使在集群内部能够通过该 Cluster IP 地址将客户端请求路由到集群中的一个 Pod 上,从而实现客户端与 Pod 的通信。
| 序号 |
|
|---|---|
| 1 | Service 概念与实战 |
| 2 | Service 类型:NodePort、ClusterlP、LoadBalancer、ExternalName |
| 3 | 虚拟 IP 与 Service 的代理模式 |
| 4 | 集群外部的请求访问集群内应用的最佳方式:Ingress |
5.持久化存储
由于容器是一种无状态的服务,所以容器中的文件在宿主机上表现出来的都是临时存放(当容器崩溃或者重启时,容器中的文件会丢失)。另外,Kubernetes 也需要在 Pod 之间实现数据共享。为了解决这些问题,Kubernetes 与 Docker 一样,也通过使用 数据卷 的方式来实现 数据持久化。
| 序号 |
|
|---|---|
| 1 | K8s 持久化存储方式 |
| 2 | 持久卷 PV |
| 3 | 持久卷声明 PVC |
| 4 | 持久卷的动态供给 Dynamic Provisioning |
6.安全认证
Kubernetes 作为一个分布式的虚拟化集群管理工具,保证其集群的安全性就显得非常重要。由于 API Server 是访问集群资源的唯一入口,因此 Kubernetes 的安全机制都是围绕保护 API Server 来设计的。
| 序号 |
|
|---|---|
| 1 | K8s 的安全框架和用户认证 |
| 2 | K8s 的鉴权管理(一):基于角色的访问控制(RBAC 鉴权) |
| 3 | K8s 的鉴权管理(二):基于属性 / 节点 / Webhook 的访问控制 |
| 4 | 服务账号 Service Account |
7.kubectl 命令
从用户的角度来看,kubectl 是你控制 Kubernetes 的驾驶舱。它允许您执行所有可能的 Kubernetes 操作。从技术角度来看,kubectl 是 Kubernetes API 的客户端。
Kubernetes API 是一个 HTTP REST API。这个 API 是真正的 Kubernetes 用户界面。 Kubernetes 完全通过该 API 进行控制。这意味着每个 Kubernetes 操作都作为 API 端点公开,并且可以通过对此端点的 HTTP 请求来执行。
因此,kubectl 的主要工作是向 Kubernetes API 执行 HTTP 请求。
| 序号 |
|
|---|---|
| 1 | 什么是 kubectl |
| 2 | kubectl 常用命令 |
| 3 | 如何使用 kubectl 操作 cluster、node、namespace、pod |
8.实际应用
Helm 对于 Kubernetes 来说就相当于 Yum 对于 Centos 来说,如果没有 Yum 的话,我们在 Centos 下面要安装一些应用程序是极度麻烦的,同样的,对于越来越复杂的 Kubernetes 应用程序来说,如果单纯依靠我们去手动维护应用程序的 YAML 资源清单文件来说,成本也是巨大的。
| 序号 |
|
|---|---|
| 1 | 用 Helm 来简化 K8s 应用管理 |
| 2 | 基于 KubeSphere 的 Kubernetes 生产实践之旅 |
1589

被折叠的 条评论
为什么被折叠?



