随着容器技术的普及,我们很多业务都迁移到了容器中,容器的管理变得日益复杂,因此有了如下对话:
小刘:老张,请说你最近在学Kubernetes?这是一个什么高大上的工具呀?
老张:Kubernetes简称k8s,就是一种管理容器的工具。
小刘:他主要提供了哪些功能呢?
老张:你想想,我们在使用Docker的时候,都遇到过哪些问题呀?
小刘:(陈思片刻)上周我有个服务崩溃了,后来我修复上线,折腾了好久。由于是多实例部署,我需要手动登录到好几个服务器上去手动更新Docker镜像然后启动,光是启动这些镜像就折腾了一下午。
老张:有了k8s,就没有这些问题啦。你只需要定义好镜像源,一个命令就可以全量更新所有的镜像啦,还支持灰度发布呢!
小刘:哇,这么厉害呀!那他还支持哪些功能呀?别卖关子了,都告诉我吧!
老张:k8s功能可多啦,除了上面提到的,还有服务发现、负载均衡、自动扩缩容,还能对容器进行监控检测。
小刘:听起来好像很复杂的样子。那他是怎么实现这些功能的呢?
老张:k8s将几个镜像打包在一个环境中运行,并称之为pod,pod是k8s资源调度的单位。k8s给每个pod打上了很多标签,k8s根据一定标签规则过滤出多个pod,然后对其进行扩缩容等操作。
k8s根据上图中的各个组件来实现具体的功能。其中的左侧虚线框位于Master节点,右侧虚线框位于Worder节点。
- pod,包含一个或多个容器镜像,是k8s调度的单位;
- node(节点),可以理解为一个物理机器,支持一个或多个pod的运行;
- kube-apiserver,k8s对外暴露的服务网关;
- kube-scheduler,负责pod的调度;
- controller-manager,负责维护、监控pod在各个节点上的运行;
- etcd,一个分布式存储工具;
- kubelet,个节点上pod操作的实际执行者;
- kube-proxy,可以理解为k8s的内部路由代理;
除了上面提到的概念,k8s还提供了一些工具,便于操作和处理k8s:
- kubectl,k8s提供的终端控制命令;
- kubeadm,可以用来初始化或加入一个k8s集群;
小刘:哇,听的我跃跃欲试。那我改如何下手呢?
老张:千里之行始于足下,自己搭一个集群来找找感觉吧:https://blog.csdn.net/tptpppp/article/details/101392645