![](/img/k8s.png)
k8s基本概念
k8s架构
![image-20210827215539933](C:/Users/Aaron/AppData/Roaming/Typora/typora-user-images/image-20210827215539933.png)
Kubelet
-
节点代理,pod 管理,处理master中api-server下发的节点任务,每个节点都会启动 kubelet进程
-
容器健康检查:kubelet 创建了容器之后还要查看容器是否正常运行,如果容器运行出错,就要根据 pod 设置的重启策略进行处理。
-
容器监控:kubelet 会监控所在节点的资源使用情况,并定时向 master 报告,资源使用数据都是通过 cAdvisor 获取的。知道整个集群所有节点的资源情况,对于 pod 的调度和正常运行至关重要。
k8sPod
Pod基本概念
-
最小部署单元
-
一组容器的集合
-
一个Pod中的容器共享网络命名空间与存储
-
Pod是短暂
Pod存在的意义
![image-20210828165716277](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210828165716277.png)
Pod实现机制
- 共享网络:在一个Pod中创建一个或者多个容器,前提会创建一个infrastructure Container(基础容器)维护整个Pod网络空间,其他创建容器会与该容器有联系,使用共同的网络(IP相同),相同的namespace。
- 共享存储:独立于Node之外的数据卷
Pod容器分类与设计模式
![image-20210828172744077](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210828172744077.png)
![image-20210828174835675](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210828174835675.png)
Pod与controller的关系
通过应用部署controller,controller通过label-selector关联Pod
![image-20210828175441008](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210828175441008.png)
k8s控制器
Deployment控制器功能与应用场景
- 部署无状态应用
- 管理Pod与ReplicaSet
- 具有上线部署、副本设定、滚动升级、回滚等功能
- 提供声明式更新,例如只更新一个新的Image
应用场景:Web服务、微服务
yaml字段解析
![image-20210828180541134](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210828180541134.png)
应用升级和回滚
Service存在的意义
-
service是通过kube-proxy来实现的
-
防止Pod失联(服务发现){获取可用Pod的IP列表}
-
定义一组Pod的访问策略(负载均衡)
Pod与Service的关系
Service类型
第一种
![](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210828205053823.png)
第二种
![image-20210828205114006](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210828205114006.png)
第三种(主流 )
Deployment和StatefulSet-有状态应用守护者
![image-20210831112312100](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210831112312100.png)
![image-20210831112339399](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210831112339399.png)
Ingress Controller
意义:在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供了以下几种方案:NodePort、LoadBalancer、Ingress
Ingress是基于域名,负载均衡还是用nginx
![image-20210831102146878](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210831102146878.png)
CICD
传统模式:
ps:传统方式会将打包好的jar包
使用k8s集成:
ps:一次构建多环境部署,前提应用的配置不能写死,可配置在配置中心或者configmap
Namespace命名空间
![image-20210830171243493](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830171243493.png)
![image-20210830171253906](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830171253906.png)
ps:通过服务命名隔离,但是通过cluster-ip或者是Pod的ip访问是不受限制的,属于**单维度。**
Resource多维度集群资源管理
资源:
- CPU
- GPU
- 内存
- 持久化存储
![image-20210830171939588](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830171939588.png)
核心设计
- Requests
- Limits
样例:
![image-20210830172336223](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830172336223.png)
ps:cpu:100m相当于0.1核cpu,1cpu = 1000m
k8s会根据requests和limits判断服务等级:
![image-20210830173102559](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830173102559.png)
Pod驱逐策略-Eviction
![image-20210830173801152](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830173801152.png)
![image-20210830173843104](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830173843104.png)
Label标签
![image-20210830174256398](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830174256398.png)
例如:Pod打上标签,ReplicaSer(RS)可以知道哪些是自己的,Service知道哪些是自己的
Scheduler调度策略
![image-20210830175330847](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830175330847.png)
部署策略
![image-20210830180104543](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210830180104543.png)
实现业务负载均衡四层和七层代理
k8s下的service、cluster-ip、nodeport都是四层的负载均衡。
Ingress-nginx是7层的负载均衡器 ,同时负责统一管理外部对k8s cluster中Service的请求。
负载均衡,就是根据请求的信息不同,来决定怎么样转发流量。
四层负载均衡,就是根据请求的ip+端口,根据设定的规则,将请求转发到后端对应的IP+端口上。
七层负载均衡,则是在四层基础上,再去考虑应用层的特征。比如说一个WEB服务器的负载均衡,除了根据IP+80端口来判断之外,还可以根据七层URL,浏览器类别,来决定如何去转发流量。
K8s常见的日志采集问题和解决方案
![image-20210901170705490](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210901170705490.png)
常见方案
远程日志
![image-20210901210053905](C:/Users/Aaron/AppData/Roaming/Typora/typora-user-images/image-20210901210053905.png)
SideCar
![image-20210901210157926](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210901210157926.png)
LogAgent
![image-20210901210324348](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210901210324348.png)
![image-20210901210434834](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210901210434834.png)
LogPilot
![image-20210901210544797](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210901210544797.png)
K8s的监控
![image-20210901210712114](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210901210712114.png)
Prometheus
- 一系列服务的组合
- 系统和服务的监控报警平台
特征
架构
数据类型
![image-20210901211108838](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210901211108838.png)
数据来源
服务器基础指标
![image-20210901212054932](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210901212054932.png)
docker容器指标
![image-20210901212151458](https://gitee.com/aaronlynn/picture/raw/master/img/image-20210901212151458.png)
k8s组件
基于K8s开发一个容器管理平台
未完待续…..