K8S知识点
2019-05-14 08:54:21 369 举报
AI智能生成
k8s
作者其他创作
大纲/内容
k8s组件
Master 组件
kube-apiserver
任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行
ETCD
etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划
kube-controller-manager
节点(Node)控制器
副本(Replication)控制器:负责维护系统中每个副本中的pod
端点(Endpoints)控制器:填充Endpoints对象(即连接Services&Pods)
Service Account和Token控制器:为新的Namespace 创建默认帐户访问API Token
cloud-controller-manager
节点(Node)控制器
路由(Route)控制器
Service控制器
卷(Volume)控制器
kube-scheduler
kube-scheduler 监视新创建没有分配到Node的Pod,为Pod选择一个Node
插件 addons
DNS
群集 DNS是一个DNS服务器,能够为 Kubernetes services提供 DNS记录
用户界面
kube-ui提供集群状态基础信息查看
容器资源监测
容器资源监控提供一个UI浏览监控数据
Cluster-level Logging
Cluster-level logging,负责保存容器日志,搜索/查看日志
节点(Node)组件
kubelet
安装Pod所需的volume
下载Pod的Secrets
Pod中运行的 docker(或experimentally,rkt)容器
定期执行容器健康检查
Reports the status of the pod back to the rest of the system, by creating a mirror pod if necessary
Reports the status of the node back to the rest of the system
kube-proxy
docker
RKT
supervisord
fluentd
K8S是什么
K8s是将8个字母“ubernete”替换为“8”的缩写
容器集群管理系统
快速部署应用
快速扩展应用
无缝对接新的应用功能
节省资源,优化硬件资源的使用
k8s特点
可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展: 模块化, 插件化, 可挂载, 可组合
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
k8s能做什么
多个进程(作为容器运行)协同工作。(Pod)
存储系统挂载
Distributing secrets
应用健康检测
应用实例的复制
Pod自动伸缩/扩展
Naming and discovering
负载均衡
滚动更新
资源监控
日志访问
调试应用程序
提供认证和授权
Kubernetes对象
对象(Object)规范和状态
Object Spec
Spec描述了对象所需的状态 - 希望Object具有的特性
Object Status
Status描述了对象的实际状态,并由Kubernetes系统提供和更新
描述Kubernetes对象
apiVersion - 创建对象的Kubernetes API 版本
kind - 要创建什么样的对象?
metadata- 具有唯一标示对象的数据,包括 name(字符串)、UID和Namespace(可选项)
Kubernetes Names
Kubernetes REST API中的所有对象都用Name和UID来明确地标识
对于非唯一用户提供的属性,Kubernetes提供labels和annotations
Kubernetes资源的Name能有最长到253个字符
UIDs
UIDs是由Kubernetes生成的,在Kubernetes集群的整个生命周期中创建的每个对象都有不同的UID
Kubernetes Namespaces
通过文件创建
命令行直接创建
删除
删除一个namespace会自动删除所有属于该namespace的资源
default和kube-system命名空间不可删除
PersistentVolumes是不属于任何namespace的,但PersistentVolumeClaim是属于某个特定namespace的
Events是否属于namespace取决于产生events的对象
查看 Namespaces
Kubernetes从两个初始的Namespace开始
default
kube-system 由Kubernetes系统创建的对象的Namespace
命名空间名称满足正则表达式[a-z0-9]([-a-z0-9]*[a-z0-9])?,最大长度为63位
大多数Kubernetes资源(例如pod、services、replication controllers或其他)都在某些Namespace中,但Namespace资源本身并不在Namespace中。而低级别资源(如Node和persistentVolumes)不在任何Namespace中。Events是一个例外:它们可能有也可能没有Namespace,具体取决于Events的对象
Setting the namespace for a request
ResourceQuota
LimitRange
Labels 和 Selectors
示例
"release" : "stable", "release" : "canary"
"environment" : "dev","environment" : "qa","environment" : "production"
"tier" : "frontend","tier" : "backend","tier" : "cache"
"partition" : "customerA", "partition" : "customerB"
"track" : "daily", "track" : "weekly"
Labels选择器
Equality-based requirement 基于相等的要求
kubectl get pods -l environment=production,tier=frontend
Service和ReplicationController适用
Set-based requirement
kubectl get pods -l 'environment in (production),tier in (frontend)'
Job,Deployment,Replica Set,和Daemon Set 适用
Volume
pod支持
pod需要指定Volume的类型和内容
spec.volumes字段)
映射到容器的位置
spec.containers.volumeMounts字段
emptyDir
hostPath
hostPath允许挂载Node上的文件系统到Pod里面去
secret
secret volume用于将敏感信息(如密码)传递给pod
persistentVolumeClaim
persistentVolumeClaim用来挂载持久化磁盘的
downwardAPI
通过环境变量的方式告诉容器Pod的信息
projected
Projected volume将多个Volume源映射到同一个目录
Using subPath
有时,可以在一个pod中,将同一个卷共享,使其有多个用处。volumeMounts.subPath特性可以用来指定卷中的一个子目录,而不是直接使用卷的根目录。
Annotations
构建、发布的镜像信息,如时间戳,发行ID,git分支,PR编号,镜像hashes和注Registry地址。
一些日志记录、监视、分析或audit repositories。
一些工具信息:例如,名称、版本和构建信息。
用户或工具/系统来源信息,例如来自其他生态系统组件对象的URL。
负责人电话/座机,或一些信息目录。
Node
Node Status
Addresses
HostName:可以通过kubelet 中 --hostname-override参数覆盖。
ExternalIP:可以被集群外部路由到的IP。
InternalIP:只能在集群内进行路由的节点的IP地址
Phase
不推荐使用,已弃用。
Condition
OutOfDisk
True:如果节点上没有足够的可用空间来添加新的pod;否则为:False
Ready
True:如果节点是健康的并准备好接收pod;False:如果节点不健康并且不接受pod;Unknown:如果节点控制器在过去40秒内没有收到node的状态报告。
如果Ready condition的Status是“Unknown” 或 “False”,比“pod-eviction-timeout”的时间长,则传递给“ kube-controller-manager”的参数,该节点上的所有Pod都将被节点控制器删除
MemoryPressure
True:如果节点存储器上内存过低; 否则为:False。
DiskPressure
True:如果磁盘容量存在压力 - 也就是说磁盘容量低;否则为:False。
Capacity
描述节点上可用的资源:CPU、内存和可以调度到节点上的最大pod数
Info
关于节点的一些基础信息,如内核版本、Kubernetes版本(kubelet和kube-proxy版本)、Docker版本(如果有使用)、OS名称等。信息由Kubelet从节点收集
Management
有三个组件与Kubernetes节点接口进行交互:节点控制器(node controller)、kubelet和kubectl
Node Controller
第一个是在注册时将CIDR块分配给节点
第二个是使节点控制器的内部列表与云提供商的可用机器列表保持最新
第三是监测节点的健康状况
Node容量
Service
0 条评论
下一页