K8S相关内容

常用工具:docker linux k8s kubeadm

概念
etcd 数据库 类似redis 
api server 接口对外提供api 调用 可以命令 kubectl 或者 kube-proxy,能访问etcd,事件总线
scheduler 调度决策的组件 掌握新的情况,进行决策及分布pod放在哪些node
controller 定时监控 保证实际和预期一样 

work节点
kubelet 资源管理者 在api server上
container runtime 来管理容器 启动 关闭容器 收集容器信息 拉镜像
kube-proxy 管理service的组件 kube-dns 来进行解析域名


K8S对象
1、pod
pod是最小部署单元,一个pod有一个或多个容器组成,pod中容器共享存储和网络,在同一台docker主机上运行
2、service
service一个应用服务抽象,定义了pod逻辑集合和访问这个pod集合的策略 3
service代理pod集合对外表现是为一个访问入口,分配一个集群ip地址,来自这个ip的请求将负载均衡转发后端pod中的容器
service通过Lable Selector选择一组Pod提供服务。
type里有LoadBalancer ,正常选nodeport,因为loadbalancer是云服务 还有Pod内部ClusterIP
端口:
port:本身端口
targetPort:后台的端口
nodePort是在本机物理暴露端口 利用labels进行选择Service内部域名转发 30000~32767之间

3、Volume
数据卷,共享pod中容器使用的数据
4、Namespace
命名空间将对象逻辑上分配到不同Nameapace,可以是不通的项目、用户等区分管理,并设定控制策略,从而实现多租户
命名空间也称为虚拟集群
5、Lable
标签用于区分对象(比如pod,service),键值对存在,每个对象可以有多个标签,通过标签关联对象。
6、ReplicaSet
下一代Replication Controller。功能就是:确保任何给定时间指定的pod副本数量,副本少了,它会创建,并提供声明式更新等功能
RC与RS唯一区别就是lable selector支持不同,RS支持新的基于集合的标签、RC仅支持基于等式的标签 (RC即将被替代)
7、Deployment
Deployment是一个等高层次的API对象,他管理ReplicaSet和pod,并提供声明式更新等功能
官方建议使用Deployment管理ReplicaSets,而不是直接使用ReplicaSets,这就意味着可能永远不需要直接操作ReplicaSet对象
8、StatefulSet(满足有状态服务的部署)
StatefulSet适合持久性的应用程序,有唯一的网络标识符(IP),持久存储,有序的部署、扩展、删除和滚动更新
9、DaemonSet
DaemonSet确保所有(或一些)节点运行同一个pod。当节点加入k8s集群中,pod会被调度到改节点上运行,当节点从集群中移除时,DaemonSet的pod会被删除,删除DaemonSet会清理它所有创建的pod

daemonset 一个节点只有一个
典型应用场景:

每个节点运行日志收集服务
每个节点运行监控服务
每个中运行网络插件、存储插件

10、job
一次性任务,运行完成后pod销毁,不再重新启动新容器。还可以任务定时运行
运行一次性容器
容器按照持续运行的时间可分为两类:
服务类容器
服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等。
工作类容器
工作类容器则是一次性任务,比如批处理程序,完成后容器就退出。
Kubernetes 的 Deployment、ReplicaSet 和 DaemonSet 都用于管理服务类容器;对于工作类容器,我们用 Job。
11、configMap
ConfigMap使用场景:
通过环境变量的方式,直接传递给pod
通过在pod的命令行下运行的方式(启动命令中)
作为volume的方式挂载到pod内
12、Secret
一般情况下ConfigMap 是用来存储一些非安全的配置信息,因为ConfigMap是明文存储的,面对敏感信息时,我们就需要使用k8s的另一个对象Secret
13、ClusterIP 内部反向代理
在service下nodeport是服务器物理node对外暴露 内部pod之间相互访问就得用ClusterIP

存储卷 抽象 Volume :
解决挂载物理硬盘
挂在宿主机硬盘 默认是用hostPath

-存储解耦PVC 和PV:
解决修改挂载物理硬盘必须发布的问题 动态迁移公有云
persistentvolumeClaim(PVC)持久卷申请
persistentvolume(PV) 持久卷

静态绑定 Pod->Volume-> PVC->PV->物理存储器
动态绑定 Pod->Volume-> PVC->StorageClass->Storage Provisioner->物理存储器

-资源请求 和限额Request/Limit:
CPU Memory 可以用Request来申请大小,用Limit来限制大小

-Java K8S内存配置:
Metrics Server 组件 可以下载后启动 它会定期抓取metrics HPA也要根据这个自动伸缩 ,替代品
prometheus 普罗米修斯

kubectl top po 或 kubectl top no 来看内存使用情况

内存:
heap memory 堆-> 放对象 垃圾回收这个 
non-heap 类 非堆->类 元数据
other 对象:jvm本身结构

堆_> 最小 最大 最大堆使用量 超过就OOM 初始逐渐向Max
allocated 分free used 
进入容器内 
java --XX:+PrintFlagsFinal -version | grep "UseContainerSupport | InitialRAMPercentage | MaxRAMPercentage | MinRAMPercentage"
UseContainerSupport=true时候 是支持容器的比如openjdk 1.8.0_212

如果K8S参数不设置 Limit内存 ,最大内存值就是 就用所有物理内存乘以  MaxRAMPercentage,比如 MaxRAMPercentage是25%,物理内存4G,最大内存就是1G
MaxRAMPercentage=80.0 就是80%

DockerFile 里java -jar 后面的启动参数可以从K8S传参进去ENTRYPOINT exec java $JAVA_OPTS -jar /usr/shar/app.jar
然后在yml文件下设置  
resources:
   request
   limit:1000m
env:
  - name:JAVA_OPTS
     value:" -XX: MaxRAMPercentage=80.0" 

结果最大就是800m

-探针:
http方式都是向容器内发送请求来判断

就绪探针 readiness probe  /status 是否启动后就绪 如果不活,就不向pod发送流量

存活探针  liveness probe  /healthz 是否还活着 如果不活 就杀掉容器

端口转发:
kubectl port-forward   
解决: 可以用浏览器访问对应端口进去浏览

查看日志:
kubectl logs


辅助治理:
ELK: logtash  针对 java 收集

EFK:fluentd  针对Docker 收集
skywalking zipkin  cat调用链监控平台

分布式后续学习:
serviceMesh
分布式锁
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

资深Android开发带你入门Framework,架构师必备技能

开头 先说一下我大概的情况吧。渣本毕业,工作已经有快两年了,从高中就开始玩小破站。无论是学习还是日常放松都是在b站。大学主学的软件技术专业,所以,进大学校门那一刻起,去上海bilibili工作就在心里埋下了种子。在学…

Java——线程锁,死锁,等待唤醒机制

一、线程锁 线程安全问题 其实,线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,…

资深大牛带你了解源码!关于Android程序员最近的状况,大厂内部资料

前言 回顾一下自己这段时间的经历,因公司突然通知裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。公司开始第二波裁员,我决定主动拿赔偿走人。后续的面试过程我做了一些准备&#xff…

AE 新建项目(一)(持续更新,做到哪算哪)

开发环境 工具:Visual Studio 2012、ArcEngine10.4.1 语言:C# 开发步骤 1、打开Visual Studio 2012,选择新建项目,创建一个.NET Framework4的,Windows窗体应用程序。取名Demo 2、工具箱中,拖一个splitConta…

基于redis分布式锁实现的多线程并发程序

前两个版本的代码 都或多或少存在一定的问题,虽然可能微乎其微,但是程序需要严谨再严谨, 第一个版本问题: 局限于单机版,依赖于 Jvm的锁 第二个版本问题: 极端情况下,解锁逻辑的问题&#xf…

day15 Ui自动化元素的定位

day15 元素的定位Ui自动化元素的定位1、火狐浏览器安装try xpath2、元素定位思路:(1)查看页面元素,确认能够唯一定位到元素的属性,比如id,文案3、学习xpath cssSelector 手写定位方式xpath(xpat…

几张图可以理解GC JVM调优的内容

public class ApiPurchaseOrderServiceApp {public static void main(String[] args) throws Exception {ApiPurchaseOrderServiceApp mnew ApiPurchaseOrderServiceApp();m.compute();//栈System.out.println("ok");//方法出口}public int compute(){int a1;//局部…

灵魂拷问!一起刷完了这份1307页的安卓面试宝典吧,不吃透都对不起自己

前言 每个程序员都有一个梦想,那就是进一线互联网公司深造,不要跟我说你不想进去,如果给你一个这样的平台,不管是薪资待遇还是接触的高度来说,对我们程序员来说都是一个机会,我以前有一个同事,…

ShardingSphere分库分表实战

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于…

灵魂拷问!细数Android开发者的艰辛历程,成功入职阿里

什么是中年危机 根据权威数据显示,国内IT程序员鼎盛时期是在25-27岁左右,30岁对于程序员而言完全是一个38线,接着就是转业转岗的事情,这一点在业界也算是一个共识了。 大学毕业步入IT行业普遍年龄也是在22岁左右,然而…

React 深度学习:ReactFiber

packages/react-reconciler/src/ReactFiber.js Fiber // A Fiber is work on a Component that needs to be done or was done. There can // be more than one per component. // Fiber 是 Component 上需要完成或已经完成工作。每个组件可以有多个 fiber。 export type Fiber…

JMM模型到并发编程

电脑:内存 L1 L2 L3 缓存 CPU ctrlatldel就可以看到 Java 有线程内存,在执行线程的时候,会从主内存把变量加载到工作内存(缓存),所以,在多线程同时改变一个静态变量时候,实际是分开…

焦虑的移动互联网开发者如何破局?专题解析

尴尬的35岁 不知道是哪个人提出的职场35岁就要面临被淘汰的定律,因为35岁定律本来就是个伪命题,尤其是在IT行业! 现在年八九百万的大学生毕业,他们虽然年轻活力,但是很多企业也将之“拒之门外”。 35岁的不要,二十几…

17.前端路由router-07keep-alive

keep-alive是Vue提供的一个抽象组件,用来对组件进行缓存,从而节省性能, 由于是一个抽象组件,所以在v页面渲染完毕后不会被渲染成一个DOM元素 当组件在keep-alive内被切换时组件的activated、deactivated这两个生命 周期钩子函数会…

jvm指令码

建议直接复制保存至本地,研究jvm运行,执行指令非常有帮助 一、未归类系列A 此系列暂未归类。 指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推送至栈顶 二、const系列 该系列命令主要负责把简单的数值类型送到栈顶。该系列命令不带参…

来一份全面的面试宝典练练手,面试真题解析

前言 下面的题目都是大家在面试字节跳动或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。 参考解析:郭霖、鸿洋 内容特点:条理清晰,含图像化表示更加易懂。 内容概要:包括 Handler、Activi…

使用IDEA创建Maven项目和Maven使用入门(配图详解)

本文详解的讲解了使用IDEA创建Maven项目,及Maven的基础入门。 1、打开IDEA,右上角选择File->New->Project 2、如图中所示选择Maven(可按自己所需添加,否则加载时速度很慢) 3、添加项目所需Groupld,ArtifactId,Ve…

jvisualvm安装Visual GC插件

给jdk自带的jvisualvm安装Visual GC插件,遇到Were sorry the java.net site has closed(我们很抱歉java.net网站已经关闭) 1、找到新的更新地址 visualvm新访问地址:https://visualvm.github.io/index.html 进入“Plugins”&…

来自阿里巴巴佛系安卓程序员的指南,专题解析

开头 中国互联网发展的这些年,如今90后程序员是中国程序员的主力军,互联网的热潮也让一批批00后蠢蠢欲动,尝试涌入互联网圈。 当程序员容易,当一个优秀的程序员需要不断学习,从初级程序员到高级程序员,从…

C#在WinForm中打开控制台显示

引用: namespace 测试使用 {public partial class Form1 : Form{[System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError true)][return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bo…