K8S重要技术内容主要涵盖:集群架构、容器化应用部署、ScaleUp/Down、滚动更新、监控检查、集群网络、数据管理、监控与日志
Cluster是计算、存储、网络资源的集合,利用资源运行各种基于容器的应用
Master是Cluster的核心,负责调度、控制。
高可用版本,一般至少两个Master
Node负责运行容器应用
由Master管理,Node负责监控和汇报容器状态
根据Master的要求管理容器的生命周期
Pod是K8S最小的工作单元,一个Pod会包含一个或多个容器Container
Pod中的1个或多个容器会被Master调度到一个Node上面运行
Pod的特点:
1)可管理性
K8S中,Pod以最小的单元进行调度、扩展、共享资源、管理生命周期
2)通信和资源共享
同一个Pod中的容器,网络共享(拥有相同的IP和Port)、网络互通(等同于本地访问)、存储共享(等同于本地访问)
Pod的两种使用方式
1)运行单一容器
one container per pod 模式,是K8S最常见的模式,k8s通过管理Pod来管理容器
2)运行多个容器
联系十分紧密的两个容器,可以编排于同一个Pod中,他们资源和通信共享,两个容器的服务一起启动、一起停止
K8S通过Controller管理Pod,Controller中定义Pod的部署特性
1)Deployment
最为常见的Pod的部署方式,可以管理多Pod副本
2)ReplicaSet
实现Pod的多副本管理,通常使用Deployment创建Pod的时候会自动创建ReplicaSet,通过ReplicaSet来管理Pod,通常不直接创建ReplicaSet
3)DaemonSet
用在一个Node只运行一个Pod副本的情况,守护进程
4)StatefulSet
能够保证Pod的每个副本在整个生命周期中的名称是不变的,不因重启而变化,其他Controller不具备这样的特点
5)Job
用于运行结束就删除的应用,其他Controller会长期运行
Pod间通过IP通信,但是Pod的重启都会导致IP变化,为了能够正常通信,就要依靠Service
Service定义了一组外部访问Pod的方式,Service有自己的Ip和端口,为Pod提供负载均衡
Namespace可以将一个物理Cluster划分为多个虚拟Cluster,资源完全隔离
K8S默认的Namespace为
在Cluster节点上,安装kubelet,负责启动Pod和容器
在Cluster节点上,安装Kubeadm,负责初始化Cluster
在所有节点上,安装kubectl,负责部署和管理应用,查看各种资源,创建、删除、更新组件
1) 初始化Master
kubeadm init --apiserver-adverties-address= --pod-network-cidr=
2)查看Pod具体状态
kubectl get pod --all-namespaces
Pod状态:
3)查看Pod启动具体日志
kubectl describe pod [podname]