版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/91306095
kubectl和minikube是部署kubernetes集群的2个重要工具,本文主要介绍如何安装这2个工具。
可以看到执行了 kubeadm init 之后,貌似一直卡住 kubelet 这个进程的健康检查上,日志如下。
apiVersion: v1 kind: ServiceAccount metadata: name: dashboard namespace: kube-system --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: dashboard subjects: - kind: ServiceAccount name: dashboard namespace: kube-system roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
Author: xidianwangtao@gmail.com NewNodeController入口 Controller Manager在启动时,会启动一系列的Controller,Node Controller也是在Controller Manager启动时StartControllers方法中启动的Controller之一,其对应的创建代码如下。 cmd/kube-controller-manager/app/controllermanager.go:455 nodeController,
本文主要记录在kubeadm reset后,在重装集群,加入和管理节点过程中遇到的问题。
kubernetes version: 1.6.2 Kube-controller-manager Configuration kube-controller-manager一共有72个flag配置,具体如下: flagvaluedefault valuecomments --address ip0.0.0.0The IP address to serve on (set to 0.0.0.0 for all interfaces) (default 0.0.0.0) --allocate-node
Kubernetes是Google开源的容器集群管理系统。它构建于docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩 容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。
Author: xidianwangtao@gmail.com Kubernetes Node Controller源码分析之执行篇 更多关于kubernetes的深入文章,请看我csdn或者oschina的博客主页。 Node Controller的启动 if ctx.IsControllerEnabled(nodeControllerName) { // 解析得到Cluster CIDR, # clusterCIDR is CIDR Range for Pods in cluster.
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
在高可用的k8s集群中,当Node节点挂掉,kubelet无法提供工作的时候,pod将会自动调度到其他的节点上去,而调度到节点上的时间需要我们慎重考量,因为它决定了生产的稳定性、可靠性,更快的迁移可以减少我们业务的影响性,但是有可能会对集群造成一定的压力,从而造成集群崩溃。
平时工作中,会遇到很多问题,百度上一搜都是垃圾广告,很难搜到解决问题的重点,尤其是最近搭建k8s集群,很多错误(大佬可能要笑了)需要谷哥,然后在github、stackoverflow上就搜到了答案,不过,很多都是英文的,看不懂但找重点还是可以找到的。下面分享几个我看过就解决了问题的文章,当然不限k8s
抛砖引玉 环境 centos 7 amd64 两台 kubernetes 1.10 伴随着k8s1.10版本的发布,前天先在一台机器上搭建了k8s单机版集群,即既是master,也是node,按照经验,将 kubeadm init 提示的 kubeadm join 记录下来,方便未来新增集群集工作节点(机器)时,可以直接复用,紧接着就部署dashboard、heapster、ElasticSearch、Redis、dotnet 微服务等等,一气呵成,集群状态良好,因为之前测试环境搞过k8s,呵呵 .....
答:1)、livenessProbe,健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器。 2)、readinessProbe,可用性检查,周期性检查服务是否可用,不可用将从service的endpoints中移除。
Kubernetes中通过device plugin将GPU作为一种resource来使用,因此需要先创建一个device plugin将GPU信息注册到Kubernetes中。NVIDIA官方提供了一个GPU device plugin,详情可见https://github.com/NVIDIA/k8s-device-plugin。
从Kubernetes 1.8开始,官方推荐使用Device Plugins方式来使用GPU、FPGA、NIC、InfiniBand等高性能硬件。
上一篇文章中kubernetes系列教程(七)深入玩转pod调度介绍了kubernetes中Pod的调度机制,通过实战演练介绍Pod调度到node的几种方法:1. 通过nodeName固定选择调度,2. 通过nodeSelector定向选择调度,3. 通过node Affinity亲和力调度,接下来介绍kubernetes系列教程pod的健康检查机制。
这两个pod的非安全端口没有开启,健康检查时报错,但是由于本身服务是正常的,只是健康检查的端口没启,所以不影响正常使用。
笔记本/台式机电脑的性能足够强劲(内存不低于 8G),可以直接安装 docker-desktop,并启用其中内嵌的 Kubernetes 集群,用做学习、测试,也可以用作日常开发。
在安装kubernetes的过程中,经常会遇见如下错误 failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup 原因是docker的Cgroup Driver和kubelet的Cgroup Driver不一致。 有两种方式解决问题,一种是修改docker,,另一种是修改kubelet; 1、修改docker的Cgroup Driver 修改/e
八、部署master节点 master节点的kube-apiserver、kube-scheduler 和 kube-controller-manager 均以多实例模式运行:kube-scheduler 和 kube-controller-manager 会自动选举产生一个 leader 实例,其它实例处于阻塞模式,当 leader 挂了后,重新选举产生新的 leader,从而保证服务可用性;kube-apiserver 是无状态的,需要通过 kube-nginx 进行代理访问,从而保证服务可用性;下面部署命令均在k8s-master01节点上执行,然后远程分发文件和执行命令。
启动(Startup Probe)、存活(Liveness Probe)和就绪探针(Readiness Probe)有其不同的用途和优先级。
每个Pod里运行着一个特殊的被称之为Pause的容器,其他容器则为业务容器,这些业务容器共享Pause容器的网络栈和Volume挂载卷,因此他们之间通信和数据交换更为高效。在设计时可以充分利用这一特性,将一组密切相关的服务进程放入同一个Pod中;同一个Pod里的容器之间仅需通过localhost就能互相通信。
周期性检查节点状态,每当节点状态为 NotReady,并且超出 podEvictionTimeout 时间后,就把该节点上的 pod 全部驱逐到其它节点,其中具体驱逐速度还受驱逐速度参数,集群大小等的影响。
这两天搭建了一套新的kubernetes环境,由于这套环境会被用于演示,所以持续观察了好几天这套环境,发现不少容器平台稳定性的问题,这里记录一下以备忘。
在《研发工程师玩转Kubernetes——启动、存活和就绪探针》中,我们讲了就绪探针和服务之间的特殊关系。就绪探针检测失败并不代表整个程序处于“非存活”状态,可能只是短暂临时的不可以提供服务,比如CPU阶段性占满,导致就绪探针检测超时而导致失败。这个时候就绪探针并不会向存活探针那样尝试重启容器,而只是简单的把它从何它关联的Service中摘除。
Pod Eviction 是k8s一个特色功能,它在某些场景下应用,如节点NotReady、Node节点资源不足,把pod驱逐至其它Node节点。
使用Kubeadm安装的K8s集群获取kube-scheduler和kube-controller-manager组件状态异常,基本上都会出现这个问题。
大家在对 2023 年诸多互联网公司故障的总结中多次提到了控制 “爆炸半径”,几乎都在说缩小集群规模,那除了缩小集群规模外还有没有其他办法呢?如果一出问题就通过缩小规模去解决,多少会显得有点不够专业(草台班子)。k8s 已经经历了九年半的发展,众多的终端用户在以什么样的方式使用 k8s,即便社区高手如云,也很难把所有使用场景都考虑到并且处理好,但也不至于差到连我们这群"草台班子"都能想到的一些最基本的问题(比如控制爆炸半径)都想不到。比起把集群搞大出问题的人,反而是在出问题后只会喊控制集群规模的那些 k8s 相关的云原生专家们,那些 k8s 集群管理员们,更像是草台班子。(并没有说 k8s 等于云原生的意思,但只要做的事情和 k8s 沾点边就号称云原生,这是事实)
Author: xidianwangtao@gmail.com k8s-device-plugin内部实现原理图 在Kubernetes如何通过Device Plugins来使用NVIDIA GP
故障现象 查看状态存在不健康组件 [root@k8s-master ~]#kubectl get cs Warning: v1 ComponentStatus is deprecated in v1.19+ NAME STATUS MESSAGE ERROR scheduler
部署高可用 kubernetes master 集群 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 目前这三个组件需要部署在同一台机器上。 kube-scheduler、kube-controller-manager 和 kube-apiserver 三者的功能紧密相关; 同时只能有一个 kube-scheduler、kube-controller-manager 进程处于工作状态,如果运行多
Author: xidianwangtao@gmail.com Create Device Manager Instance Device Manager在何时创建 Device Manager和Volume Manager、QoS Container Manager等一样,都属于kubelet管理的众多Manager之一。Device Manager在kubelet启动时的NewContainerManager中创建。 pkg/kubelet/cm/container_manager_linux.g
可以使用 kubectl 命令行创建对象,也可以编写 .yaml 格式的文件进行创建
在kubernetes集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,管理Pod和其中的容器。
解决思路: 注释掉/etc/kubernetes/manifests下的kube-controller-manager.yaml和kube-scheduler.yaml的- – port=0 确认kube-scheduler和kube-controller-manager组件配置是否禁用了非安全端口
使用 helm 安装 Prometheus Operator。使用 helm 安装后,会在 Kubernetes 集群中创建、配置和管理 Prometheus 集群,chart 中包含多种组件:
这个 PR 对有大量 workload 并且 开启了 Liveness/Readiness Probes 的集群 可以说是非常有用了。
我们经常会说:容器和 Pod 是短暂的。 其含义是它们的生命周期可能很短,会被频繁地销毁和创建。容器销毁时,保存在容器内部文件系统中的数据都会被清除。
本文基于Kubernetes v1.10的代码,对Kubelet Device Manager的实现进行了代码走读分析,方便对kubelet与device plugin的交互有更深入的理解。另外,分别对kubelet的Register服务、kubelet调用device plugin的Allocate接口等做了分析,尤其要了解kubelet device plugins的checkpoint机制。
「 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波」
我们先来看一下Kubernetes的架构图,每个Node节点上都有 kubelet ,Container Probe 也就是容器的健康检查是由 kubelet 定期执行的。
这里我探测了一个并不存在的地址,所以pod在探测失败后肯定会重启 启动该pod,启动成功后查看pod的描述和日志
在节点处于“NotReady”状态时,deployment控制器会迁移节点上的容器实例,并将节点上运行的pod置为“Terminating”状态。待节点恢复后,处于“Terminating”状态的pod会自动删除。偶现部分pod(实例)一直处于“Terminating ”状态,发现这部分的pod没有得到重新调度,不能提供服务。
LivenessProbe和ReadinessProbe均可配置以下三种探针实现方式: 可参考官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
本章主要讲述,使用kubeadm进行安装配置K8S集群,并指定使用containerd作为容器运行时的具体安装步骤,以及尽可能在案例中加入k8s集群常用组件及其操作配置。
K8S报错异常锦集(持续更新)
确实是controller-manager问题 查看状态是否有报错信息,根据实际情况,我的直接重启一下就好了
领取专属 10元无门槛券
手把手带您无忧上云