具体命令详解:
1.基础命令:
https://www.jianshu.com/p/d2fe32fd4675
2.设置命令:
https://www.jianshu.com/p/97f71c8ec720
3.部署命令:
https://www.jianshu.com/p/43a5d6bd1b67
4.集群管理命令:
https://www.jianshu.com/p/f7a0b418eeac
5.集群故障排查和调试命令:
https://www.jianshu.com/p/c03f3799e3ab
6.其他命令:
https://www.jianshu.com/p/c069c799a6c1
简介:
Kubernetes,又称为 k8s(首字母为 k、首字母与尾字母之间有 8 个字符、尾字母为 s,所以简称 k8s)或者简称为 "kube" ,是一种可自动实施 Linux 容器操作的开源平台。
Kubernetes 通过将容器分类组成 "容器集" (pod),解决了容器增殖带来的许多常见问题容器集为分组容器增加了一个抽象层,可调用工作负载,并为这些容器提供所需的联网和存储等服务。
总结:
- kubernetes主要分为两类节点:master和node
- master节点:api Server、Scheduler、CrotrollerManager、ETCD
高可用集群副本数据最好是>=3奇数个。
(1)api Server:API Server是Kubernetes Cluster的前端接口,集群控制的唯一入口,通过调用api Server提供的api接口实现各自的功能;api Server是唯一修改集群数据库状态的组件。
(2)CrotrollerManager:集群内各资源controller的核心管理者,资源包括node、pod副本数、服务端点等;针对每一种具体的资源,都有相应的controller。Controller Manager由多种controller组成,包括replication controller、endpoints controller、namespace controller、serviceaccounts controller等。
(3)Scheduler:Scheduler负责决定将Pod放在哪个Node上运行。Scheduler在调度 时会充分考虑Cluster的拓扑结构,当前各个节点的负载,以及应用对 高可用、性能、数据亲和性的需求。
(4)ETCD:etcd负责保存Kubernetes Cluster的配置信息和各种资源的状态信息。当数据发生变化时,etcd会快速地通知Kubernetes相关组件。
kubectl get pod时API Server会从etcd中读取这些数据。 - node节点:Node是Pod运行的地方,Kubernetes支持Docker、rkt等容器 Runtime。Node上运行的Kubernetes组件有kubelet、kube-proxy和Pod 网络(例如flannel)
(1)kubelet:是Node的agent,当Scheduler确定在某个Node上运行Pod 后,会将Pod的具体配置信息(image、volume等)发送给该节点的 kubelet,kubelet根据这些信息创建和运行容器,并向Master报告运行 状态。
(2)kube-proxy:运行在每个node上,负责写入规则至IPTABLES、IPVS 实现服务映射访问。将service的请求按策略(负载均衡)算法分发到后端pod上。
(3)Pod网络:Pod要能够相互通信,Kubernetes Cluster必须部署Pod网络, flannel是其中一个可选方案。
每个Node都会运行kube-proxy服务,它负责将访问service的 TCP/UPD数据流转发到后端的容器。如果有多个副本,kube-proxy会 实现负载均衡。
其他插件说明:
(1)COREDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
(2)DASHBOARD:给k8s集群提供一个B/S结构访问体系
(3)INGRESS CONTROLLER:官方只能实现四层代理,INGRESS可以实现七层代理
(4)FEDERATION:提供一个可以跨集群中心多k8s统一管理功能
(5)PROMETHEUS:提供k8s集群的监控能力
(6)ELK:提供k8s集群的日志统一分析介入平台
相关术语:
1.主机(Master): 用于控制 Kubernetes 节点的计算机。所有任务分配都来自于此。
2.节点(Node):负责执行请求和所分配任务的计算机。由 Kubernetes 主机负责对节点进行控制。
3.容器集(Pod):被部署在单个节点上的,且包含一个或多个容器的容器组。同一容器集中的所有容器共享同一个 IP 地址、IPC、主机名称及其它资源。容器集会将网络和存储从底层容器中抽象出来。这样,您就能更加轻松地在集群中移动容器。
4.复制控制器(Replication Controller):用于控制应在集群某处运行的完全相同的容器集副本数量。
控制器:ReplicationController(RC)、ReplicaSet(RS)、Deployment。相同点:确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来代替,而如果异常多出来的容器也会自动回收。不同点:RS支持集合式的selector;Deployment可以管理RS,如RS不支持Rolling-update,但Deployment支持。
5.服务(Service):将工作内容与容器集分离。Kubernetes 服务代理会自动将服务请求分发到正确的容器集——无论这个容器集会移到集群中的哪个位置,甚至可以被替换掉。
6.Kubelet:运行在节点上的服务,可读取容器清单(container manifest),确保指定的容器启动并运行。
7.kubectl: Kubernetes 的命令行配置工具。
docker运行状态
docker简介:https://www.jianshu.com/p/3bb447292818
当 kubernetes 将容器集调度到一个节点上时,该节点上的 kubelet 会发送指令让 docker 启动指定的容器。kubelet 随后会不断从 docker 收集这些容器的状态,并将这些信息汇集至主机。Docker 将容器拉至该节点,并按照常规启动和停止这些容器。不同在于,自动化系统要求 docker 在所有节点上对所有容器执行这些操作,而非要求管理员手动操作。
pod
-
一个 pod 包含一组容器,一个 pod 不会跨越多个工作节点
2.pod 相当与逻辑主机,每个 pod 都有自己的 IP 地址
3.pod 内的容器共用pause网络栈,容器通过local host的方式进行访问
4.默认情况下,每个容器的文件系统与其他容器完全隔离
5.各个pod之间的通信:全覆盖网络Overlay Network
6.pod与service之间的通信:各个节点的Iptables规则
pod和docker
https://www.jianshu.com/p/9abc4af0f680
node
1、node是kubernetes集群中真正的工作负载节点。
2、kubernetes集群由多个node共同承担工作负载,pod被分配到某个具体的node上执行;
3、kubernetes通过node controller对node资源进行管理。支持动态在集群中添加或删除node;
4、每个集群node上都会部署kubelet和kube-proxy两个组件。
网友评论