📚 Kubernetes(K8S)简介

## 课程内容 - 介绍下什么是 kubernetes,什么时候需要 kubernetes,以及它的组成架构。 - 用 3 种不同的方式教大家如何安装 kubernetes 集群。包括 minikube,云平台搭建,裸机搭建(3 台服务器)。 - 通过一个 demo 项目演示如何部署项目到集群中,怎么对外暴露服务端口 - 怎么部署数据库这种有状态的应用,以及如何数据持久化 - 集群中配置文件和密码文件的使用 - 怎么使用 Helm 应用商店快速安装第三方应用 - 怎么使用 Ingress 对外提供服务 目标:学完课程,对 kubernetes 有一个全面的认识,能够轻松应对各种集群部署工作。 >s 本文档课件需配套 [视频](https://www.bilibili.com/video/BV1Tg411P7EB/) 一起学习 ## Kubernetes (K8S) 是什么 它是一个为 **容器化** 应用提供集群部署和管理的开源工具,由 Google 开发。 **Kubernetes** 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目 **主要特性:** - 高可用,不宕机,自动灾难恢复 - 灰度更新,不影响业务正常运转 - 一键回滚到历史版本 - 方便的伸缩扩展(应用伸缩,机器加减)、提供负载均衡 - 有一个完善的生态 > **学习课程前提** 熟悉 Docker 的基本使用,如果你还不了解 Docker,先看视频 [Docker 快速上手](https://www.bilibili.com/video/BV11L411g7U1) 熟悉 Linux 操作系统 ## 不同的应用部署方案 ![container_evolution.svg](https://cos.easydoc.net/46901064/files/kwmxgxwp.svg) #### 传统部署方式: 应用直接在物理机上部署,机器资源分配不好控制,出现Bug时,可能机器的大部分资源被某个应用占用,导致其他应用无法正常运行,无法做到应用隔离。 #### 虚拟机部署 在单个物理机上运行多个虚拟机,每个虚拟机都是完整独立的系统,性能损耗大。 #### 容器部署 所有容器共享主机的系统,轻量级的虚拟机,性能损耗小,资源隔离,CPU和内存可按需分配 ## 什么时候需要 Kubernetes 当你的应用只是跑在一台机器,直接一个 docker + docker-compose 就够了,方便轻松; 当你的应用需要跑在 3,4 台机器上,你依旧可以每台机器单独配置运行环境 + 负载均衡器; 当你应用访问数不断增加,机器逐渐增加到十几台、上百台、上千台时,每次加机器、软件更新、版本回滚,都会变得非常麻烦、痛不欲生,再也不能好好的摸鱼了,人生浪费在那些没技术含量的重复性工作上。 这时候,Kubernetes 就可以一展身手了,让你轻松管理百万千万台机器的集群。“谈笑间,樯橹灰飞烟灭”,享受着一手掌控所有,年薪百万指日可待。 Kubernetes 可以为你提供集中式的管理集群机器和应用,加机器、版本升级、版本回滚,那都是一个命令就搞定的事,不停机的灰度更新,确保高可用、高性能、高扩展。 ## Kubernetes 集群架构 ::: hljs-center ![部署示意图](https://cos.easydoc.net/46901064/files/kwob90mh.png) ::: #### master 主节点,控制平台,不需要很高性能,不跑任务,通常一个就行了,也可以开多个主节点来提高集群可用度。 #### worker 工作节点,可以是虚拟机或物理计算机,任务都在这里跑,机器性能需要好点;通常都有很多个,可以不断加机器扩大集群;每个工作节点由主节点管理 #### 重要概念 Pod 豆荚,K8S 调度、管理的最小单位,一个 Pod 可以包含一个或多个容器,每个 Pod 有自己的虚拟IP。一个工作节点可以有多个 pod,主节点会考量负载自动调度 pod 到哪个节点运行。 ::: hljs-center ![集群示意图.png](https://cos.easydoc.net/46901064/files/kwoccq7d) ::: #### Kubernetes 组件 `kube-apiserver` API 服务器,公开了 Kubernetes API `etcd` 键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库 `kube-scheduler` 调度 Pod 到哪个节点运行 `kube-controller` 集群控制器 `cloud-controller` 与云服务商交互 ![Kubernetes组件](https://cos.easydoc.net/46901064/files/kwonmx7e.png) > 如果你想要了解更多 K8S 组成细节,主节点、工作节点分别有哪些程序,各有什么作用,可以查看 [官网详细介绍](https://kubernetes.io/zh/docs/concepts/overview/components/) >d 觉得老师讲得不错的话,记得点赞、关注、分享鼓励下老师 你们的鼓励会让老师更加有动力继续创造更多更好的内容 你可以到 [Github issue](https://github.com/gzyunke/test-k8s/issues) 给我报告问题