随笔分类 -  kubernates

kubernates
摘要:虽然通过kube-proxy可以帮助实现集群内外的pod相互通信,对这些pod做负载均衡(用户态userspace轮询算法,性能低也不安全)和网络的流量代理,但是随着service的增多,nodeIP越来越多,并且kube-proxy生成的规则链也会越来越多,即使是iptables路由(内核态随机算 阅读全文
posted @ 2020-06-07 13:42 ppjj 阅读(849) 评论(0) 推荐(0)
摘要:entrypoint设置容器的入口程序,就是容器启动时执行的程序,docker run中最后的命令将作为参数传给入口程序,它有两种格式exec和shell,它们之间区别在于指定的命令是否在shell中运行,其中shell底层使用/bin/sh -c COMMAND运行,就是说主进程shell进程,后 阅读全文
posted @ 2020-06-07 13:28 ppjj 阅读(1372) 评论(0) 推荐(0)
摘要:通过前面两篇文章,我们已经有了一个“嗷嗷待哺”的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓“纸上得来终觉浅,绝知此事要躬行”),本文从实践角度介绍如何结合我们常用的Gitlab与Jenkins,通过K8s来实现项目的自动化部署 阅读全文
posted @ 2020-06-06 17:45 ppjj 阅读(2971) 评论(0) 推荐(0)
摘要:容器管理 容器,就是Linux被严格限制资源约束(cgroups),安全约束(Unix权限,capabilities,SELinux,AppArmor,seccomp等)和命名空间(PID,网络,mount,等等)限制出来的应用。docker是最常见的一种容器技术,Docker由Docker dae 阅读全文
posted @ 2020-06-06 17:43 ppjj 阅读(851) 评论(0) 推荐(0)
摘要:一、自定义镜像有两种方法: 1、docker commit 启动一个容器,增删改查,安装软件,修改配置文件等 ; 另存为一个新镜像 docker run -it docker.io/centos 启动一个容器 yum install -y vim net-tools ctrl+p+q 退出容器 do 阅读全文
posted @ 2020-06-06 17:36 ppjj 阅读(1292) 评论(0) 推荐(0)
摘要:理解etcd性能:etcd集群架构图,包含raft层,storage层(storage层包含treeindex层和boltdb底层持久化存储key-value层),它们每一层都可能造成性能损失,raft层需要网络同步数据,网络io节点之间的rtt和带宽都会影响etcd性能,另外wal也会受到磁盘io 阅读全文
posted @ 2020-04-28 16:53 ppjj
摘要:etcd是一个分布式,可靠的key-value存储系统,etcd集群通常有3个或5个节点组成,之间通过raft一致性算法进行协同,算法会选举主节点作为leader,由leader负责数据的同步和数据分发,当leader出现故障会选举另一个节点作为leader,并重新完成数据同步呢分发。 在整个架构中 阅读全文
posted @ 2020-04-28 16:52 ppjj
摘要:容器技术:最下面是磁盘,容器镜像是放在磁盘disk上的,上层是容器引擎,容器引擎可以是docker,也可以是其他,引擎向下发一个请求比如创建容器,这个时候引擎就把磁盘上面的容器镜像运行成宿主机上的一个进程。 对于容器来说,最重要怎么保证进程用到的资源被隔离和被限制,在Linux内核上面有cgroup 阅读全文
posted @ 2020-04-28 16:51 ppjj
摘要:helm:开发者把需要的资源文件包装起来,通过模板化方法,将一些可变字段暴露给用户,用户就可以自己设置了,放在指定的仓库中供用户下载,对用户而言,使用helm一条简单命令就可以install安装,卸载uninstall和升级update。使用create创建命令之后会生成charts.yaml(ch 阅读全文
posted @ 2020-04-28 16:49 ppjj
摘要:k8s通过pod部署应用,但是pod生命周期短暂,删除了重启之后IP地址就变了,这时需要service服务发现,对内的话对所有pod提供统一的访问入口,让pod网络暴露出去,对外的话提供统一的访问地址,包含负载均衡。 创建完成service有一个唯一的ClusterIP字段,它通过service的唯 阅读全文
posted @ 2020-04-28 16:49 ppjj
摘要:k8s网络模型约法三章:任意两个pod之间可以直接通信,无需经过显示使用nat来接受数据和地址的转换;node和pod直接通信,无需明显地址转换;pod看见自己的ip跟别人看见IP是一样的,无需转换。 network namespace是实现网络虚拟化的内核基础,创建了隔离的网络空间,拥有独立的附属 阅读全文
posted @ 2020-04-28 16:48 ppjj
摘要:在k8s中监控和日志属于生态一部分,并不是核心组件,定义了介入的接口标准和规范,供其他厂商组件快速集成。监控类型:资源监控,性能监控apm监控,安全监控,事件监控,监控的接口标准:resource metrice(实现类metrics-server常见有节点级别,pod级别,namespace级别, 阅读全文
posted @ 2020-04-28 16:47 ppjj
摘要:探针监测,实时进行观测,资源使用情况,日志,liveness(存货探针,失败之后会杀掉pod,支持重新拉起pod)和readness(就绪探针,失败之后切断流量,启动之后无法立即对外服务),三种方式:httpget请求,exec执行容器命令,TCPsocket(容器的IP和port),三种命令都有的 阅读全文
posted @ 2020-04-28 16:47 ppjj
摘要:k8s通过csi snapshot controller来实现存储快照功能,可以快速restore,可以快速复制以及迁移等操作。他设计理念跟PVC和pv很像,volumnsnapshot相当于PVC,volumnsnapshotclass相当于storageclass集群管理员,volumnsnap 阅读全文
posted @ 2020-04-28 16:43 ppjj
摘要:使用volumns字段声明卷的名字和类型,本地卷包含emptydir和hostpath,一个随着pod删除也删除,一个是不会删除。 使用的时候用volumnmounts,name字段表示使用哪个卷,subpath:在多个容器共享一个卷的时候,为了隔离数据。 声明静态PV需要关注三个字段,capaci 阅读全文
posted @ 2020-04-28 16:41 ppjj
摘要:pod volumn可以在容器重启之后,之前的数据不丢失,可以共享数据,有本地存储和网络存储(in-tree,out-of-tree),它是独立于pod之外的,volume是存在于pod里面的,pod volune将配置信息以卷的形式挂载在容器中,容器通过posix访问数据,但是它无法准备表达数据v 阅读全文
posted @ 2020-04-28 16:37 ppjj
摘要:secret用来存储经过base64编码的密码token等敏感信息的资源对象,有type属性(opaque,service-account-token,dockerconfigjson,bootstrap.token),data属性,是用来存储secret数据的,以key-value形式。 创建方式 阅读全文
posted @ 2020-04-28 16:35 ppjj
摘要:pod配置管理方式:可变配置configmap,敏感信息secret,身份认证serviceaccount,资源配置resource,安全管控securitycontext,前置校验initcontroller。configmap的好处让可变配置和镜像进行解耦,保证容器可移植性。主要被pod使用,可 阅读全文
posted @ 2020-04-28 16:33 ppjj
摘要:job就是job-controller里面的一种类型,下面spec.template就是pod的spec,唯一多了restartpolicy重启策略和job运行失败时候的重试次数backofflimit查看pod,其实job最后执行单元还是pod,它比普通的pod多了一个ownerreference 阅读全文
posted @ 2020-04-28 16:32 ppjj
摘要:deployment中第一个replicas就是deployment期望的或最终数量,第二个template就是pod的模板查看pod:nginx-deployment-hhhhhh-uwh3e最前面一段是pod所属的deployment.name,中间一段template-hash,这里三个pod 阅读全文
posted @ 2020-04-28 16:31 ppjj