引言


软件化、可调度、服务化、多租户、解耦性。

就如同Docker其实大部分就是Linux的技术换层皮,Istio其实大部分就是K8s的技术换层皮。
Istio 项目的核心,就是由无数个运行在应用 Pod 中的 Envoy 容器组成的服务代理网格。这也正是Service Mesh 的含义。而这个机制得以实现的原理,正是借助了 Kubernetes 能够对 API 对象进行在线更新的能力,这也正是Kubernetes“声明式 API”的独特之处(可以以一种申明或者注入的形式完成代码更新)。要知道,一个 Istio 项目部署完成后,会在 Kubernetes 里创建大约 43 个 API 对象。

相较于前端社区和互联网社区,服务器端技术社区一直是个沉闷而小众的圈子。而后端不管是caas还是paas

PaaS需要给很多用户去跑不同应用,所以需要namesapces(修改各种视图)、cgroups,即PaaS其实已经做了一部分容器的研究工作。
Linux Cgroups 的全称是 Linux Control Group。它最主要的作用,就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。此外,Cgroups 还能够对进程进行优先级设置、审计,以及将进程挂起和恢复等操作。目录/sys/fs/cgroup 命令 mount -t cgroup

Docker创新点是镜像,用镜像解决了打包这个痛点。
Docker把一个纯后端的东西,以非常方便的形式提供给了开发者。

K8s

1.Kubernetes 组件之间的交互 方式:HTTP/HTTPS、gRPC、DNS、系统调用等

kubelet

计算节点上最核心的组件,kubelet负责
1.与容器运行时(Docker)打交道。两者通过CRI进行交互,Kubelet只要把各项参数以CRI形式给Docker即可。而Docker通过CRI得到的命令去执行,其实就是去在底层Linux上做一些事。
2.调用网络插件CNI为容器配置网络
3.调用存储插件CSI来进行持久化存储

kubeadm

kubeadm 就会为集群生成一个 bootstrap token。在后面,只要持有这个 token,任何一个安装了 kubelet 和 kubadm 的节点,都可以通过 kubeadm join 加入到这个集群当中。

Kubernetes 默认 kube-proxy 和 DNS 这两个插件是必须安装的。它们分别用来提供整个集群的服务发现和 DNS 功能。 kubeadm会默认以镜像的形式安装。

kubectl

Kubernetes 集群默认需要加密方式访问。所以,这几条命令,就是将刚刚部署生成的 Kubernetes 集群的安全配置文件,保存到当前用户的.kube 目录下,kubectl 默认会使用这个目录下的授权信息访问 Kubernetes 集群。如果不这么做的话,我们每次都需要通过 export KUBECONFIG 环境变量告诉 kubectl 这个安全配置文件的位置。

apiserver

scheduler