随笔分类 - k8s
摘要:本节讲解为一个pod配置资源的预期使用量和最大使用量。通过设置这两组参数,可以确保pod公平地使用Kubernetes集群资源,同时也影响着整个集群pod的调度方式。 1.为pod中的容器申请资源 创建一个pod时,可以指定容器对CPU和内存的资源请求量(即requests),以及资源限制量(即li
阅读全文
摘要:本章介绍如何通过限制pod可以与其他哪些pod通信,来确保pod之间的网络安全。 是否可以进行这些配置取决于集群中使用的容器网络插件。如果网络插件支持,可以通过NetworkPolicy资源配置网络隔离。 一个NetworkPolicy会应用在匹配它的标签选择器的pod上,指明这些允许访问这些pod
阅读全文
摘要:1.在pod中使用宿主机命名空间、端口等资源 pod中的容器通常在分开的Linux命名空间中运行。这些命名空间将容器中的进程与其他容器中,或者宿主机默认命名空间中的进程隔离开来。 例如,每一个pod有自己的IP和端口空间,这是因为它拥有自己的网络命名空间。类似地,每一个pod拥有自己的进程树,因为它
阅读全文
摘要:1.了解认证机制 API服务器可以配置一到多个认证的插件(授权插件同样也可以)。API服务器接收到的请求会经过一个认证插件的列表,列表中的每个插件都可以检查这个请求和尝试确定谁在发送这个请求。列表中的第一个插件可以提取请求中客户端的用户名、用户ID和组信息,并返回给API服务器。API服务器会停止调
阅读全文
摘要:1.了解架构 在研究Kubernetes如何实现其功能之前,先具体了解下Kubernetes集群有哪些组件。Kubernetes集群分为两部分: Kubernetes控制平面 (工作)节点 具体看下这两个部分做了什么,以及内部运行的内容。 控制平面的组件 控制平面负责控制并使得整个集群正常运转。控制
阅读全文
摘要:RC,RS方便运行无状态的pod实例,但是怎么方便来运行一些有状态实例? 1.复制有状态pod ReplicaSet通过一个pod模板创建多个pod副本。这些副本除了它们的名字和IP地址不同外,没有别的差异。如果pod模板里描述了一个关联到特定持久卷声明的数据卷,那么ReplicaSet的所有副本都
阅读全文
摘要:Kubernetes实现了零停机的升级过程。升级操作可以通过使用ReplicationController或者ReplicaSet实现,但是Kubernetes提供了另一种基于ReplicaSet的资源Deployment,并支持声明的更新应用程序。 1.更新运行pod内的应用程序 从一个简单的例子
阅读全文
摘要:在介绍过的Downward API提供了一种简单的方式,将pod和容器的元数据传递给在它们内部运行的进程。但这种方式其实仅仅可以暴露一个pod自身的元数据,而且只可以暴露部分元数据。某些情况下,应用需要知道其他pod的信息,甚至是集群中其他资源的信息。这种情况下DownwardAPI方式将无能为力。
阅读全文
摘要:应用往往需要获取所运行环境的一些信息,包括应用自身以及集群中其他组件的信息。Kubernetes可以通过环境变量以及DNS进行服务发现,但其他信息如何处理呢?下面将介绍特定pod和容器元数据如何被传递到容器,了解在容器中运行的应用如何便捷地与Kubernetes API服务器进行交互,从而获取在集群
阅读全文
摘要:1.使用Secret给容器传递敏感数据 在k8s中,有环境变量和configmap给容器传递非敏感数据,但是通常会包含一些敏感数据,如证书和私钥,需要保证安全性。 1.1 介绍secret 为了存储与分发此类信息,Kubernetes提供了一种称为Secret的单独资源对象。Secret结构与Con
阅读全文
摘要:1.配置容器化应用程序 回顾如何传递配置数据给运行在Kubernetes中的应用程序之前,首先来看一下容器化应用通常是如何被配置的。 开发一款新应用程序的初期,除了将配置嵌入应用本身,通常会以命令行参数的形式配置应用。随着配置选项数量的逐渐增多,将配置文件化。 另一种通用的传递配置选项给容器化应用程
阅读全文
摘要:pod类似逻辑主机,在逻辑主机中运行的进程共享诸如CPU、RAM、网络接口等资源。人们会期望进程也能共享磁盘,但事实并非如此。需要谨记一点,pod中的每个容器都有自己独立的文件系统,因为文件系统来自容器镜像。 每个新容器都是通过在构建镜像时加入的详细配置文件来启动的。将此与pod中容器重新启动的现象
阅读全文
摘要:己经看到如何使用服务来提供稳定的ip地址,从而允许客户端连接到支持服务的每个pod (或其他端点)。到服务的每个连接都被转发到一个随机选择的pod上。但是如果客户端需要链接到所有的pod呢?如果后端的pod都需要连接到所有其他 pod呢?通过服务连接显然不是这样的,那是怎样的呢? 要让客户端连接到所
阅读全文
摘要:在Service篇里面介绍了像集群外部的客户端公开服务的两种方法,还有另一种方法 创建Ingress资源。 定义Ingress (名词)-进入或进入的行为;进入的权利;进入的手段或地点;入口。 接下来解释为什么需要另一种方式从外部访问Kubernetes服务。 为什么需要Ingress —个重要的原
阅读全文
摘要:特定的pod可以独立地应对外部请求,现在大多数应用都需要根据外部请求做出响应。例如,就微服务而言,pod通常需要对来自集群内部其他pod,以及来自集群外部的客户端的HTTP请求做出响应。 pod需要一种寻找其他pod的方法来使用其他pod提供的服务,不像在没有Kubernetes的世界,系统管理员要
阅读全文
摘要:在k8s中,如果想ping svc以及ip,发现无法ping通,使用测试环境为k8s 1.6,后来k8s升级到1.12版本,发现ping svc以及ip可以ping通,这里分析一下原因。 后来发现是由于1.8的代理模式不是ipvs(1.6版本没有引入ipvs),1.12可以配置iptables和ip
阅读全文
摘要:1.iptables模式无法ping通原因分析 iptables模式下,无法ping通任何svc,包括clusterip.所有ns下,下面来分析原因: 查看kubernetes的网络模式 curl 127.0.0.1:10249/proxyMode [root@k8s-master01 ~]# cu
阅读全文
摘要:这里主要明与NAT/Masq转发模式相关的ICMP报文处理,但也会提及由于出错引发的IPVS系统主动发送的ICMP报文。 1.ICMP由外到内处理流程入口 入口函数ip_vs_in实质上挂载在netfilter的2个hook点上,分别为:NF_INET_LOCAL_IN和NF_INET_LOCAL_
阅读全文
摘要:1.运行单个任务的pod ReplicationController、ReplicaSet、DaemonSet会持续运行任务,永远达不到完成态 。这些 pod 中的进程在退出时会重新启动。但是在一个可完成的任务中,其进程终止后,不应该再重新启动。你也会遇到只想运行完成工作后就终止任务的情况。 1.1
阅读全文
摘要:1.DaemonSet在每个节点上运行一个pod K8s中Replicationcontroller和ReplicaSet都用于在Kubernetes集群上运行部署特定数量的pod。但是,当希望pod在集群中的每个节点上运行时(并且每个节点都需要正好一个运行的pod实例),就会出现某些情况。 这些情
阅读全文

浙公网安备 33010602011771号