K8S集群简介K8S的集群由master和node组成,节点上运行着若干K8S服务。 如下图 Master节点master节点上运行着的后台服务有kube-apiserver, kube-scheduler, kube-controller-manager, etcd 和pod 网络.(flannel)。如下图所示 1.API Server (kube-apiserver)API Server是k8s的前端接口,各种客户端工具以及k8s其他组件可以通过它管理集群的各种资源。2.Scheduler (kube-scheduler)scheduler负责决定将pod放在哪个node上运行。...
简介在 Kubernetes 中,调度是指将 Pod 放置到合适的 Node 上,然后对应 Node 上的 kubelet 才能够运行这些 Pod。K8s scheduler 就是用来调度 pod 的一个组件。本文主要是通过源码了解调度器的部分工作流程。源码分析Based on Kubernetes v1.19.11.K8s scheduler 主要的数据结构是:Scheduler。SchedulingQueue。相关的代码流程主要分为两个部分:cmd/kube-scheduler,这里是我们调度器的起始处,主要是读取配置,初始化并启动调度...
背景:k8s 集群中,java应用容器中添加即时工具分析诊断arthas、netstat
1.预先下载好arthas-packaging-3.1.1-bin.zip文件,在Dockerfile同目录下,并且重命名为arthas.zipwget http://repo1.maven.org/maven2/com/taobao/arthas/arthas-packaging/3.1.1/arthas-packaging-3.1.1-bin.zipmv arthas-packaging-3.1.1-bin.zip arthas.zip2.netstat工具在alpine下为ospd-netstat,在Dockerfile直接apk add 添加即可3.以下为Dokcerfile...
一、概述
本文针对我们生产上出现的流量不均的问题,深层次地分析问题产生原因,对其中的一些机制做一些介绍。k8s是一个特别复杂的系统,而网络相关的问题是其中最复杂的问题,要通过一两篇文章介绍清楚是很难的。这个流量不均的问题出现的原因并不复杂,就是因为kube-proxy使用了iptables做负载均衡,而它是以概率的方式转发,使用长连接且连接数较少时,偏差会比较大。虽然原因不复杂,但是我们希望能把这其中的整个流程和原理梳...
1.调度过程K8S的scheduler的主要作用是将用户申请的pods调度到合适的node节点上。具体的来说,就是它通过监听API server提供的watch等接口,获取到未调度的pods和node的相关信息,通过对node的筛选,选择出最合适的也就是优先级最高的node节点,将其与pods进行绑定,并将绑定的结果固化到etcd中去。kubernetes Scheduler 运行在 master 节点,它的核心功能是监听 apiserver 来获取 PodSpec.NodeName 为空的 pod,然后为每个这样的 ...
背景:k8s 集群中,java应用容器中添加即时工具分析诊断arthas、netstat
1.预先下载好arthas-packaging-3.1.1-bin.zip文件,在Dockerfile同目录下,并且重命名为arthas.zipwget http://repo1.maven.org/maven2/com/taobao/arthas/arthas-packaging/3.1.1/arthas-packaging-3.1.1-bin.zip
mv arthas-packaging-3.1.1-bin.zip arthas.zip
2.netstat工具在alpine下为ospd-netstat,在Dockerfile直接apk add 添加即可
3.以下为Dokcerf...
一、概述
本文针对我们生产上出现的流量不均的问题,深层次地分析问题产生原因,对其中的一些机制做一些介绍。
k8s是一个特别复杂的系统,而网络相关的问题是其中最复杂的问题,要通过一两篇文章介绍清楚是很难的。这个流量不均的问题出现的原因并不复杂,就是因为kube-proxy使用了iptables做负载均衡,而它是以概率的方式转发,使用长连接且连接数较少时,偏差会比较大。虽然原因不复杂,但是我们希望能把这其中的整个流程和原理梳...
背景简介
K8s & K3s 将外部流量引入群集有哪些不同方式,在何种场景选用那种方式,我们进行如下探讨:
NodePort NodePort在集群中的主机节点上为Service提供一个代理端口,以允许从主机网络上对Service进行访问。 NodePort的流量转发机制和Cluster IP的iptables模式类似,唯一不同之处是在主机网络上开了一个“NodePort”来接受外部流量。从上面的规则也可以看出,在创建Nodeport时,Kube-proxy也会同时为Service创建Cluster IP相关...
故障案例:
发现故障:kubectl get pod -n kube-system -owide|grep -v "Running"NAME READY STATUS RESTARTS AGE IP NODEpod-jljz6 0/1 ImagePullBackOff 0 4d 10.222.96.191 paasn5
查询pod详细信息kubectl describe pod pod-jljz6 -n kube-system
....Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Failed 6m(x30...
源码分析系列文章已经开源到github,地址如下:github:https://github.com/farmer-hutao/k8s-source-code-analysisgitbook:https://farmer-hutao.github.io/k8s-source-code-analysis
本文大纲概述
从 --config 开始options.Option 对象
config.Config对象
runCommandApplyFeatureGates默认算法注册
特性开关Scheduler 的创建调度算法源
policy / provider 如何生效默认生效的算法1. 概述
今天我们要做一些琐碎的知识点分析,比...
StatefulSet和Deployment的区别
Deployment部署无状态服务,StatefulSet部署有状态服务
官方给出的建议是,如果部署的应用满足以下一个或多个部署需求,则建议使用StatefulSet
稳定的、唯一的网络标识。
稳定的、持久的存储。
有序的、优雅的部署和伸缩。
有序的、优雅的删除和停止。
有序的、自动的滚动更新。
稳定主要是针对Pod发生re-schedule后仍然要保持之前的网络标识和持久化存储。网络标识包括hostname、集群内DNS中该...
github: https://github.com/projectcalico/felix
Felix是一个守护程序,在每个 endpoints 的节点上运行。Felix 负责编制路由和 ACL 规则等,以便为该主机上的 endpoints 资源正常运行提供所需的网络连接。
Felix负责以下任务:
管理网络接口,Felix 将有关接口的一些信息写到内核,以使内核能够正确处理该 endpoint 发出的流量。 特别是,它将确保主机正确响应来自每个工作负载的ARP请求,并将为其管理的接口启用IP转...
接着
func (p *csiPlugin) NewAttacher() (volume.Attacher, error) {k8s := p.host.GetKubeClient()if k8s == nil {klog.Error(log("unable to get kubernetes client from host"))return nil, errors.New("unable to get Kubernetes client")}return &csiAttacher{plugin: p,k8s: k8s,waitSleepTime: 1 * time.Second,}, nil
}
Master 节点
coredns 2 个 ,对应的pause 容器 2 个flannel 1 个 ,对应的pause 容器 1 个proxy 1 个 ,对应的pause 容器 1 个scheduler 1 个 ,对应的pause 容器 1 个controller 1 个 ,对应的pause 容器 1 个apiserver 1 个 ,对应的pause 容器 1 个etcd 1 个 ,对应的pause 容器 1 个master 节点 端口监听情况
kubelet TCP:10248kubelet TCP: 42006
k...