初探k8

kubernetes [kubern安tAs] 安装1.11 版以上

Docker技术的三大核心概念,分别是:
1 概念:
搭建一次 ,anywhere 运行

搭建镜像(Image)
容器(Container): 镜像在里面运行, 资源量更轻量级 [弹性 负载 动态]
仓库(Repository):存放各种镜像的地 ,Docker Hub 是官方的仓库

docker 可以创建容器
搭建 发送 运行
容器会运行,镜像给容器提供一切 [代码, 库,资源配置 ,环境变量 ]

k8 会对容器进行 编排、管理和调度
k8 会有 master 节点 和 node 节点
k8 架构:
在这里插入图片描述

master 节点所有的服务都会自己缓存 一定数据才会 拜访api server
一些概念:
pod 概念与分类:
控制器管理的pod
只要又pod ,这个容器就会被启动
公用网络站

非控制器管理的pod :pod 挂了就挂了

一个pod 中的网络空间,ip地址 、端口[不可冲突] 都必须相同
一个pod 里有一组容器
pod 与pod 之间 会进行通讯 : 本节点通讯 或跨界点通讯
网络通讯模式

二、replication controller & replicaset & deployment [最优] 三者区别 同级别 全部属于有状态分布
1 replication controller 容器失败了,会创建new pod ,多出来也会回收
2 replicasets 比 1 多了 支持集合式的 selector ,可独立运行
3 deployment 是 replicaset 的升级版 ,可自动管理replicaset ,可版本滚动更新

特:deployment 创建rs ,rs创建pod ,比如需要版本退化v2 ->v1

三、horizontal pod autoscaling [HPA] 水平pod 自动扩容,就是增加pod 的个数
HPA 和replicaset 同级 ,会根据 某 replicaset 的情况[比如cpu 的利用率 大于.80%] 扩张pod 的个数

四 、statefulset STA : 解决有状态服务的问题
1 稳定持久化储存,pod 死亡又被调度回来,数据什么都不会丢失
2 稳定的网络标志 ,pod 的hostname 都不会再变
3 有序部署 每个pod 都又序号 (例如那个服务是先起,那个服务后起 )
4 pod有序删除
五、daemonSet
1 确保全部 node 上运行一个pod 副本,增加node ->daemonSet 会在该node 上创建pod,减少node,它也会减少pod, 删除daemonSet,其创建的pod 也会删除。
2适用场景:
1 运行集群存储daemon :在每个node 上都会与运行 glusterd、ceph
2 在每个node 上运行日志收集 daemon ,例如fluentd ,logstash
3在每个node 上运行监控 daemon ,例如 prometheus,node exporter

六 job 负责 一个pod 或多个pod 的成功结束
cron job : 定时运行job

七 服务发现

1 管理pod 的控制器 : 功能: 容器失败 重建容器副本
2 svc [服务发现]: 将创建好的pod 的ip 接口 暴露给客户端,客户端 就可以访问多个pod 了。
3 资源清单 – 类似于剧本的功能 yarn 的语法格式,需要用资源清单 yarn 语法编写pod,掌握pod 的生命周期
通过资源清单编写pod

5 pod有无状态分布 :
有状态服务 :比较复杂,没有既定规则 eg :dnms db
无状态服务: lvs apache : 工厂生产线工人 eg: docker

4 存储类型: 要有自己的mind
configmap

secret

volume

pv
6 调度器: 会自动将pod 或容器调度到 某个节点
:概念
:过程
:自定义调度器

7 集群安全机制 难重要
1集群认证 鉴权 访问控制原理 及流程
8 helm 重要 类似于linux 中的yum ,不过helm 安装的是服务 eg :mongdb
需要编写helm 模板 , helm 部署一些常用的插件
9 运维:
k8 源码修改之类的 ----默认证书只有一年
k8 高可用集群

k8 源于 google 的borg 系统[大规模集群管理工具]

在这里插入图片描述

k8 的架构 与它有一点点区别
scheduler 做好后,会交给 api server ,由api server 放入 etcd 中

1 rc : 维度副本的数量,比如想让容器运行几个副本 ,[类似于我的sprk 规模 ?]
2 etcd 做持久化的,天生就是集群, 目前是v3 版本。

etcd 架构
http server
raft
store
wal
entry
snapshot

kuberlet cri 容器运行环境 接口 ,操作docker 创建容器
负责pod 的生命周期

kuber_prox : 被svc 操作 ,写入规则ip tables ,实现服务映射访问的
接客 是触点
以 一些插件
1 coredns :可以为集群中的svc 创建对应的ip hostname 解析
2 dashbord : 提供k8 bs 结构体系
3 ingress controller :k8 只能实现4层代理,ingress 可以实现7层代理
4 普罗米修斯 :提供k8s 集群的监控能力
5 efk :提供k8 日志统一接入平台
6 高可用集群副本数目最好>= 3 奇数


1 YAML文件中的各种属性、参数都是从API中得来的,目前最新的kubernetes API文档如下:
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/
1 workloads api 工作负载资源
2 service api 将工作负载资源 缝合到 无障碍平衡 service上
3 config and storage api 配置与储存的api 将数据注入到应用程序中,并在外部将数据持久化到容器中。
4 metadata api 配置群集中其他资源的行为。
5 cluster api 定义群集本身的配置,通常仅由群集操作使用。
6 definitions old api versions
2 patch strategy: merge 是指 新的指会替换旧的值

创建遇到的各种奇葩问题
1 不能用 _ 连接
2 invalidate 各种使 无效 无法验证 之类 ,—>一般参数归属错误
3 spark-cluster 的resource 使没有限制的。

volume : 其实 理解 :容器中的 磁盘

1 kind : [感觉都可以单独去设置 或者 混和]

资源对象 : ReplicationController, ReplicaSet ,Deployment ,
Pod,StatefulSet、DaemonSet、Job、CronJob、
HorizontalPodAutoscaling[水平pod 自动扩展]

配置对象 :Service, Secret,Namespace, Node,ConfigMap、Ingress、Label、ThirdPartyResource、
ServiceAccount,endpoint[service 与pod 之间的桥梁]
存储对象 :Volume、Persistent Volume
策略对象 :SecurityContext、ResourceQuota、LimitRange

Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

开发人员要做的事:
1 开发源代码
2 编写 dockerfile 文件 :
运行环境 :from[基础镜像],maintainer[维护者谁],run[基础镜像需要安装什么 eg:httpd],
and[copy 文件 会自动解压], workdir[设置当前工作目录],expose[设置外露端口],
volume[设置券],env[设置容器内环境变量],copy[==and 只是不会自动解压],
arg[构建镜像时指定的参数] , cmd [要运行的代码jar ,这个jar 就是你写的代码]
3 然后需要bulid 成镜像

运维人员 要 将 镜像 创建成容器

一 pod 的生命周期

二 资源清单 指针

三 deployment

四 控制器
rc = rs -selector = deployment -selector -pod回滚历史版本- 升级状态 与事件可查看 ,可定制[升级策略,可暂停,可查看版本记录]

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值