• kubernetes笔记: HPA

    Source descriptions: Output descriptions: pkg/controller/podautoscaler/horizontal.go:169 // Run begins watching and syncing. func (a *HorizontalController) Run(stopCh <-chan struct{}) { defer utilruntime.HandleCrash() defer a.queue.ShutDown...


  • kubernetes笔记: Cephfs

    cephfs 内核mount 用户态mount 限定用户态mount的size cephfs用作Volume cephfs用作PV/PVC cephfs用作storage class 有了前面ceph RBD的基础,再来看cephfs就简单很多了。本文介绍了kubernetes上使用cephfs的方法,重点介绍了kubernetes上用cephfs支持storage class的解法。 cephfs cephfs类似...


  • kubernetes笔记: Ceph RBD

    背景 ceph集群 node上准备ceph RBD用作volume RBD用作PV/PVC RBD用作storage class 总结 背景 为什么k8s需要RBD呢?以前用到的volume,有 configmap 、empty dir、hostpath,configmap通常是用来向容器注入配置的,而empty dir、hostpath 也能够用来存储数据,但他们都有一个致命的问题:如果容器被删除了,数据也就跟着丢失了。这对一些无状态应用来说没什么,因为他们的数据...


  • kubernetes笔记: LimitRanges

    前面我们介绍了kubernetes的resourceQuota,现在再来介绍下limitRanges。 Resource Quota区分的粒度是namespace,其目的是为了不同namespace之间的公平,防止某些流氓team占用了太多的资源。而limitRange区分的粒度则是container,则是在为了在同一个namespace下,限制container的最大最小值。另外, 在设置了resourceQuota的namespace下,如果用户创建Pod时没有指定limit/request,...


  • kubernetes笔记: Resource Quotas

    在一个多用户、多团队的k8s集群上,通常会遇到一个问题,如何在不同团队之间取得资源的公平,即,不会因为某个流氓团队占据了所有资源,从而导致其他团队无法使用k8s。 k8s的解决方法是,通过RBAC将不同团队(or 项目)限制在不同的namespace下,通过resourceQuota来限制该namespace能够使用的资源。资源分为以下三种。 计算资源配额:cpu,memory 存储资源配置:requests.storage(真~总量),pvc,某storage class下的限制(例...


  • kubernetes笔记: ingress

    What is Ingress? ingress types single service ingress Simple fanout Name based virtual hosting Multiple ingress controllers What is Ingress? internet | ------------ [ Services ] service通常只是在集群内部有...


  • kubernetes笔记: RBAC鉴权

    RBAC API 概览 Role and ClusterRole RoleBinding and ClusterRoleBinding Referring to Resources Aggregated ClusterRoles Referring to Subjects Default Roles and Role Bindings Auto-reconciliation u...


  • kubernetes笔记: subpath

    k8s允许我们将不同类型的volume挂载到容器的特定目录下。例如,我们可以将configmap的数据以volume的形式挂到容器下。 定义一个configmap,其中的数据以 key:value 的格式体现。 apiVersion: v1 kind: ConfigMap metadata: name: special-config namespace: default data: special.level: very special.type: |- property...


  • kubernetes笔记: HostAliases

    k8s上不同服务之间可以通过service的域名来互相访问。域名的解析是一般是通过在集群中的kube-dns(主要是dnsmasq)或者coredns完成的。k8s的dns也可以向上级联dns服务器。 有的时候,我们希望给运行在k8s上的Pod增加一些域名的解析(例如宿主机的主机名),但又不想对dns模块动太多,有没有什么比较方便的办法呢? 容易想到的是,将域名记录到容器镜像的/etc/hosts文件,这样容器运行时就可以正确解析了。 然而这样是不行的。k8s会管理这个文件,打到镜像里的文件实...


  • kubernetes笔记: downward API

    Store Pod fields Store Container fields 能力 ### k8s新增了一个叫做downward API的概念。 其目的是,容器可以知道一些自己的信息,但又不需要跟k8s过度耦合(也就是不希望在容器中调用k8s的api)。 有两种方式可以将Pod和Container的信息暴漏给运行中的容器。 Environment variables DownwardAPIVolumeFiles 这俩货,就叫做 downward API。可能是...