给大家kubernetes核心技术详解之一

1年前 (2017-04-14) admin k8s 0评论 已收录 519℃

好长时间没写文章了,昨天刚倒霉一天,今天写篇文章安慰的自己,废话不多说直接看题。

 

kubernetes核心技术详解
概述
模块化,可插拔化
公有云,私有云,混合云部署
可挂载
可组合
自动恢复
自动复制
自动重启
使用
使用命令 kubectl 进行交互
kubectl  create -f    name.yaml 创建pod
kubectl   get  pods   查看创建的pods
READY是1 表明是成功的服务正常
kubectl   delete  pods  nameserver   删除创建的的pods
kubectl   get  pods     nginx -o yaml       以yaml形式查看创建的服务的pods
Pods
创建,调度以及管理的最小单元
共存的一组容器的集合
容器共享PID,网络,IPC以及UTS的命名空间
容器共享存储卷
短暂存在
Volumes
解决数据卷持久化
Pad中容器共享数据
生命周期和定义pods生命周期一样的
支持多种类型的数据卷
emptyDir 本地创建数据卷其初始是一个空文件夹可以读写
hostpatch 本机自定义数据卷,映射存储路径进行存储
gcePersistentDisk 云端
awkElasticBlockStore 云存储
nfs 网络磁盘
iscsi 网络磁盘
gluserfs 网络磁盘
secrets 用来保存一些敏感的数据,一般用来保存用户加密的密码
labels
用以标示对象(如Pod)的key/value对
组织并选择对象的子集
范例
kubectl  create -f    labels.yaml
格式  labels:
app: nginx
kubectl  get   pods   -l  app=nginx 查看对应的lables值
Replication Controllers
当某个节点出现故障,如何确保新的节点进行替补
确保在任意时刻运行指定的数据的Pod
容器重新调度
规模调整简单
在线升级
多个版本的跟踪
特别的注意⚠️:使用新版本的RC和旧版本的RC需要至少有一处不同的labels以标记版本的Pods
范例如下
kubectl    create  -f  rc.yaml 创建一个rc
apiVersion: v1     版本是v1
kind: ReplicationController  对象是rc
metadata:
name: my-nginx  命名是 my-nginx
spec:
replicas: 2       定义任何时刻确保有2个nginx运行
template:        运行时pods的定义
metadata:
labels:
app: nginx
spec:              定义container一样
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
kubectl    get  rc 查看创建的rc
kubectl    get  pods  -l  app=nginx  查看lables的数目
Services
抽象一系列Pod并定义其访问规则
固定IP地址和DNS域名
通过环境变量和DNS发现服务
负载均衡
外部服务访问方式
ClusterIP 当前的集群内访问
NodePort 在集群内暴露某一个端口,通过集群的某一工作节点IP和端口来访问这个服务
LoadBalancer 云服务商提供外部负载均衡可以使用这种类型
范例:
kubectl    create  -f  services.yaml 创建一个service.yaml
apiVersion: v1     版本是v1
kind: Service 对象是Service 类型
metadata:
name: nginx-service  命名是 nginx-service
spec:
ports:  定义端口
- containerPort: 8000 内网
targetPort:80  映射外网端口80
Protocol:tcp
Selector:   定义选择器为那些pod提供服务
app:nginx
kubectl    get  services   查看创建的services
Names
Namespaces
Annotations
实战部署
数据持久化  volumes
保密数据管理  secrets
kubectl    create  -f  secrets.yaml 创建一个secrets.yaml
apiVersion: v1     版本是v1
kind: Secret 对象是Secret 类型
metadata:
name: mySecret 命名是 mySecret
type: Opaque—表式是随机用户数据—
date:
Password:      sdfsdfsdfsdfsddfok
Username:     sdfsdfsdfsdfsddfok
kubectl    get  secret 查看创建 my  secret
资源管理  resources
健康检测  liveness/readinessprobes
生命周期钩子函数和退出警告
组织资源配置
kubectl批量处理
有效的利用label
在线应用升级以及回退
实时更新资源
kubectl   describe   pod  查看某个节点状态
kubectl   logs   pod  《container》 查看某个节点日志状态
kubectl   exec  container  command  查看某个节点执行命令
核心模块
master上的模块
etcd模块
高可用的key/Value存储
只有apiserver有读写权限
使用etcd集群确保数据可靠性
apiserver模块
作为kubernetes的系统入口,REST 提供增,减,改,查等
认证
授权
hosts.deny
hosts.allow
访问控制
服务账号
资源限制
kube-controller-manager执行各种控制器模块
Replication Controller 确保定义的复制数量和实际运行数量的总和是一致的。
Endpoint      Controller定期关联server和pod关联信息保证server关联到pods总是最新的
Namespace    Controller 控制命名空间
Serviceaccount    Controller 控制服务账号
kube-scheduler资源调度模块
资源需求
服务需求
硬件/软件/策略限制
关联性和非关联性
数据本地化
work上的模块
kubele 管理控制dockert模块
节点管理器
确保调度到本节点的Pod的运行和健康
kube-proxy代理模块
Pod网络代理
tcp/udp 请求转发
负载均衡(Round Robin插件形式存在的)
服务发现
环境变量
DNS-kube2sky,etcd,skydns  DNS查询
每周五定期分享docker 相关核心技术
dockercore
网络
容器间的通信
节点和容器间互相通信
每个Pod使用一个全剧唯一的IP
高可用
kubelet保证每一个master节点的
服务正常运行
系统监控程序确保kubelet正常运行
Etcd 集群
Master选举确保kube-scheduler和kube-contrller-manager高可用
如图

转载请注明出自本站,谢谢合作

转载请注明出自本站,谢谢合作

 

 

博主

让学习成为习惯,坚持-共享-开源-自由! 成功者决不放弃,放弃者绝不成功!

相关推荐

嗨、骚年、快来消灭0回复。