一.入门
docker 配置文件 /etc/sysconfig/docker
k8s配置文件/etc/kubernetes/apiserver
1.master
kubernetes API Server--kube-apiserver:http rest家口的关键服务进程,所以资源增删改查入口,也是集群控制入口
kubernetes controller manager:所有资源对象的自动化控制中心
kubernetes scheduler:负责资源调度
etcd server 进程,所有的资源对象全部保存在etcd中
2.node
kubelet:负责pod对应的容器的创建,起停等任务,同时与master节点密切协作,实现管理集群
kube-proxy:实现k8s service的通信与负载均衡机制等重要组件
docker engine:负责本机等容器创建和管理工作
3.deployment:pod的编排
4.service:
node ip:node节点的ip地址
pod ip:pod的ip地址,docker engine根据docker0网桥的ip地址段进行分配的
clister ip:service 的ip地址
二.集群安全设置
kubernetes各个组件与master之间可以通过apiserver的非安全端口:http://apiserver:8080进行访问,如果api需要对外提供服务,或者集群中的某些容器也需要访问api以获取集群信息,则更安全的做法是启用https安全机制
1.ca签名:为kube-aposerver生成一个数字证书,并用ca证书进行签名;为kube-apiserver进程配置证书相关的启动参数;为每个访问kubernetes api server的客户端进程生成自己的数字证书,也都用证书进行签名,在相关程序的启动参数里增加ca证书,自己的证书等相关参数
2.在k8s中以pod为单元而不是docker,在创建pod,可以启动一个名为google_containers/pause的镜像来实现pod的概念,下载下来后推送到私有hub上,再在每台node的kubelet服务的启动参数上加上--pod_infra_container_image参数。指定为私有私有的docker registry中的pause(/etc/kubernetes/kubelet KUBELET_ARGS="**** --pod..."),然后重启kubelet--systemctl restart kubelet
3.service:负载均衡实现请求的分发,
三.k8s核心原理
api server:提供k8s的各类资源对象的增删改查等http rest接口。成为集群各个功能模块之间数据交互和通信等中心枢纽,进程在master节点的8080上
集群功能模块之间的通信:各个功能模块通过api server将信息存入etcd
controller manager原理分析:controller通过api server提供的接口实时监控整个集群的每个资源对象的当前状态
scheduler:负责接受controller manager穿件的新pod,为其安排node,安置完成后,目标node上的kubelet服务进程接管后继工作,负责pod生命周期的下半生
kubelet:在集群中,每个node节点上都会启动一个kubelet服务进程,用于处理master下发到本节点的任务,管理pod及pod中的容器
kube-proxy:在k8s集群的每个node上都会运行一个kube-proxy进程,这个集成可以看作service的透明代理兼负载均衡器,核心功能是将到某个service的访问请求转发到后端的多个pod实例上,对于每一个service,kube-proxy都会在本地node上简历一个socketserver来负责接受请求,然后均匀的发送到后端某个pod的端口上