首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

k3s原理分析丨如何搞定k3s node注册失败问题

基本原理 Agent注册的过程是十分复杂的,总的来说有两个目的: 启动kubelet等服务,连接到server节点上的api-server服务,这是k8s集群必须的 建立websocket tunnel...首先看node-token的格式: [在这里插入图片描述] 这里的user和password会对应k3s api-server中basic auth的配置,k3s api-server启动时会设置一个特殊的...了解node-token的作用,我们就可以解开agent注册过程的序幕,参考下图: [在这里插入图片描述] 以黄色文本框顺序为例,前三步是为了得到启动kubelet服务各种依赖信息,最后一步建立websocket...我们可以只关心前面三步,最重要的是api-server的地址,还有各种k8s组件通信的tls证书,由于那些证书是在server上签发,所以agent需要通过一些API请求获取,这些证书大致有: /v1-...因为agent上删除了password,agent再次注册时会重新生成password,就导致了新的password和server上原先存储的不一致。

3.4K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    『高级篇』docker之kubernetes基础集群部署(下)(34)

    PS:最重要的三个核心组件就部署完了 , 部署CalicoNode(所有节点) 它是通过系统服务加docker的方式来完成的。...这样保证最终所有的workload之间的数据流量都是通过IP路由的方式完成互联的。...Namespace的组合 我们这没有安全相关的东西,只需要设置好api-server和上下文就好啦: #指定apiserver地址(ip替换为你自己的api-server地址) kubectl config...配置kubelet(工作节点102,103这2两台机器) 简介 每个工作节点上都运行一个kubelet服务进程,默认监听10250端口,接收并执行master发来的指令,管理Pod及Pod中的容器。...=/var/lib/kubelet ExecStart=/home/michael/bin/kubelet \ #对外服务的监听地址 --address=192.168.66.103 \ #指定基础容器的镜像

    70350

    最新整理的运维工程师面试真的太给力了,整整50道,速度收藏!

    所以URL和目录的转发都可以做在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器配置简单,所以中小型企业推荐使用...、更新、终止pod等任务,kubelet 即通过控制docker来创建、更新、销毁容器; 每个kubelet进程都会在api-server上注册本节点自身的信息,用于定期向master汇报本节点资源的使用情况...kubelet启动时会向api-server进行注册,然后会定时的向api-server汇报本节点信息状态,资源使用状态等,这样master就能够知道node节点的资源剩余,节点是否失联等等相关的信息了...的服务,该服务对外暴露端口为443,目标端口6443,这个服务的ip地址是clusterip地址池里面的第一个地址,同时这个服务的yaml定义里面并没有指定标签选择器,也就是说这个kubernetes服务所对应的...TTL控制器目前只处理Job。 CronJob:一个CronJob对象就像crontab(crontable)文件中的一行。它用Cron格式进行编写,并周期性地在给定的调度时间执行Job。

    13.8K310

    【云原生 | Kubernetes篇】Kubernetes原理与安装(二)

    程序员:调用CLI告诉master,我们现在要部署一个tomcat应用 程序员的所有调用都先去master节点的网关api-server。...看哪个节点合适, scheduler把算出来的调度信息再放到etcd中 每一个node节点的监控kubelet,随时和master保持联系的(给api-server发送请求不断获取最新数据),所有节点的...0、开机默认所有节点的kubelet、master节点的scheduler(调度器)、controller-manager(控制管理器)一直监听master的api-server发来的事件变化 1、程序员使用命令行工具...kubelet专门监听 【pod调度过后的信息(node: node-02)】 事件,集群所有节点kubelet从api-server就拿到了 【pod调度过后的信息(node: node-02)】 事件...汇报给master当前启动好的所有信息 三、安装1、理解安装方式 二进制方式(建议生产环境使用) kubeadm引导方式(官方推荐) 大致流程 准备N台服务器,内网互通, 安装Docker容器化环境

    636111

    k3s高可用部署实践及其原理

    所以我们这里选择大家熟知的MySQL来做HA的实践,PostgreSQL与MySQL类似,我们就不再重复。...之前的文章,我们探讨过worker节点依然会通过thread方式运行kubelet/kubeproxy,而这些组件也需要连接api-server获取资源状态,比如我们可以看kubelet的kubeconfig...client-key: /var/lib/rancher/k3s/agent/client-kubelet.key 我们可以看到kubelet访问的是本地的服务端口,所以worker节点中一定存在一个...当我们给k3s设置相应的datastore-endpoint时,k3s的api-server还是配置连接etcd v3,但是etcd-servers的地址则配置为kine的服务地址,相当于所有的api读写操作都通过...tcpproxy需要获取真实的api-server的服务地址,这里主要靠worker与master建立的tunnel,也就是websocket数据通道获取,这个tunnel是k3s独有的。

    3.7K30

    【云原生 | Kubernetes篇】Kubernetes基础入门(三)

    Pod里面其实也是容器 kubectl get pod #以前的docker ps -a## 所有kubectl在master节点运行,把命令请求发给api-server。...api-server一系列处理## master只负责调度,而worker node才是真正部署应用的。...docker是每一个worker节点的运行时环境kubelet负责控制所有容器的启动停止,保证节点工作正常,已经帮助节点交互mastermaster节点的关键组件: kubelet(监工):所有节点必备的...,控制这个节点所有pod的生命周期以及与api-server交互等工作 kube-api-server:负责接收所有请求,集群内对集群的任何修改都是通过命令行、ui把请求发给api-server才能执行的...不包含我们后来部署应用暴露端口的方式 kube-proxy:整个节点的网络流量负责 cri:都有容器运行时环境 worker节点: kubelet(监工):所有节点必备的,控制这个节点所有pod的生命周期以及与

    1.8K91

    Kubernetes

    container kubectl exec -it 3in1 -c web-c1 -- /bin/bash 静态POD kubelet服务管理 etcd api-server controller-manmager...scheduler kube-proxy 重启kubelet服务,所有静态POD将重启 kubelet服务会动态加载/etc/kubernetes/mainifests下的配置文件 K8s高可用 k8s...副本数 daemonsets:监控pod运行状态,保证时刻都有期望的pod副本在运行,运行多pod副本,特点:要求同一个ds部署出来的pod运行在不同节点,保证所有node至少运行一个pod,无需指定副本数...这实际存在一个风险:大量的镜像文件或容器日志等,可能把操作系统根分区容量占满,进而导致系统crash或k8s pod被频繁驱逐等异常发生。...集群运行一段时间后, 发现在系统硬盘上的etcd即占空间,又影响速度。所以将其数据目录迁移到ssd中。 注意 修改配置文件后,etcd会自动重启,并且导致对应机器的kubectl不可用。

    76520

    Kubernetes 生产环境管理经验

    所有DaemonSet和kube-system,都需要带上相应的tolerations.不然该节点会驱逐所有不带这个tolerations的容器,甚至包括网络插件,kube-proxy,后果相当严重,请注意...分区,则包括 imagefs)超过了他的 limit,则这个 pod 会被驱逐 Pod 对本地临时存储总的使用量(所有 emptydir 和 container)超过了 pod 中所有container...,但是api-server拒绝了,就会出现这个情况,在api-server的容器里面,去掉SecurityContextDeny这个启动参数. service 建了一个服务,但是没有对应的po,会出现什么情况...没有自己的虚拟IP,nslookup会出现所有pod的ip.但是ping的时候只会出现第一个pod的ip / # nslookup consul nslookup: can't resolve '(null...删除PVC 把nas挂载到任意一台服务器上面,然后删除pvc对应nas的目录。

    3.3K30

    『高级篇』docker之kubernetes搭建集群添加认证授权(下)(39)

    拷贝主节点证书calico 由于calico服务是所有节点都需要启动的,需要把这几个文件拷贝到每台服务器上 ** 通过主节点拷贝到102,103两台机器上 #root的密码都是vagrant scp -...kubelet 老铁这里让kubelet使用引导token的方式认证,所以认证方式跟之前的组件不同,它的证书不是手动生成,而是由工作节点TLS BootStrap 向api-server请求,由主节点的...直接copy就可以啦 cd ~/kubernetes-starter 新的配置没有设定api-server。...不访问api-server,它是怎么知道每个服务的cluster ip和pod的endpoints的呢?...这就是因为kubernetes在启动每个服务service的时候会以环境变量的方式把所有服务的ip,端口等信息注入进来。

    92440

    宜信容器云排错工具集

    Docker守护进程到相应的目录下读取对应容器的日志文件数据,再由kubelet返回日志数据到Api-server,最终显示到web端,供用户查看。...当查看web terminal时,前端web发起了一个websocket请求,到Api-server。再由所属节点的kubelet响应该Api-server的请求,并与容器运行时建立连接。...kubelet 和容器运行时建立连接后,kubelet返回请求,Api-server将请求升级为SPDY(SPDY允许在单个的TCP请求中复用独立的STDIN/STDOUT/STDERR),并将WS的流映射到...kubernetes集群的所有节点中,并挂载了宿主机的/var/docker/docker.sock,实现与docker daemon的通信。...如上图的步骤: 1)web端提供pod的cluster、namespace、podname信息,向后端服务Backend server发起websocket请求; 2)后端服务Backend server

    2.5K40

    「走进k8s」Kubernetes1.15.1的Pod 自动扩缩容(23)

    ③ 架构 metrics-server 通过 kube-apiserver 发现所有节点,然后调用 kubelet APIs(通过 https 接口)获得各节点(Node)和 Pod 的 CPU、Memory...因为k8s的api-server将所有的数据持久化到了etcd中,显然k8s本身不能处理这种频率的采集,而且这种监控数据变化快且都是临时数据,因此需要有一个组件单独处理他们,k8s版本只存放部分在内存中...就6个文件,选择了进入文件内部直接复制文件内容的方式,一定要认真。...修改内容 国内的镜像 镜像拉取策略 添加命令和相关参数 选择目录 从 kubelet 采集数据的周期 30s 优先使用 InternalIP 来访问 kubelet,这样可以避免节点名称没有 DNS 解析记录时...PS:在yaml里面没有添加CpuUtillizationPercentage目标pod所有副本自身的cpu利用率平均值。

    2.8K21

    n1-Kubernetes名称概念解释一览

    Kbue-apiserver 描述:它是 Kubernetes 控制面的前端,主节点上负责提供 Kubernetes API 服务的组件 API-Server作为K8s最核心的组件,其他组件(kubelet...列表中的第一个插件可以提取请求中客户端的用户名、用户 ID 和组信息,并返回给 API 服务器。 API 服务器会停止调用剩余的认证插件并继续进入授权阶段。...调度器不会命令选中的节点(或者节点上运行的 Kubelet)去运行 pod,通过 API-server 更新 pod 的定义然后 API server 再去通知 Kubelet,当目标节点上的 Kubelet...Kubelet 就是负责所有运行在工作节点上内容的组件。...它第一个任务就是在 API 服务器中创建一个 Node 资源来注册该节点。然后需要持续监控 API 服务器是否把该节点分配给 pod 然后启动 pod 容器。

    77610

    Kubernetes集群的CA签名双向数字证书图示

    Kubernetes 提供了基于 CA 签名的双向数字证书的认证方式,一般对于一个安全性要求比较高的集群,一般会选择双向数字证书的认证方式,而不采用 HTTP Base 或 Token 的认证方式的,所以对于搭建集群的安全设置...api-server 作为 Master 节点的进程,像 Kubernetes 的其他组件都需要与之通信,所以这些证书的前提都是先在 Master 为 api-server 生成一个由 CA 证书签名的数字证书...ca.key 是 CA 私钥,ca.crt 是 CA 证书,通过他们可以生成 api-server 的服务私钥。...最后通过 server.csr 和 ca.crt 和 ca.key 共同签发服务器的证书 server.crt。 ? 下图展示的主要是 api-server 启动参数需要指定的一些文件。...由于是基于 CA 签名的,所以客户端比如 kube-proxy/kubelet 这些进程,同样也是通过 ca.key 和 ca.crt 来生成 client.key 和 client.crt,客户端通过这两个文件

    62030

    n1-Kubernetes名称概念解释一览

    是集群所有组件当中唯一一个有状态服务,对于高可用的集群建议采用 3 或 5 节点的 etcd 集群。...列表中的第一个插件可以提取请求中客户端的用户名、用户 ID 和组信息,并返回给 API 服务器。 API 服务器会停止调用剩余的认证插件并继续进入授权阶段。...调度器不会命令选中的节点(或者节点上运行的 Kubelet)去运行 pod,通过 API-server 更新 pod 的定义然后 API server 再去通知 Kubelet,当目标节点上的 Kubelet...需要强调的是所有这些控制器都是通过 APIServer 来操作 API 对象的,它们不会直接和 kubelet 通信或者发送任何类型的指令。...); 简单地说 Kubelet 就是负责所有运行在工作节点上内容的组件。

    46020

    云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露

    云原生-K8s安全-etcd未授权访问 如上图所示:etcd服务是运行在master节点上的,master节点上查看该服务默认通过证书认证,主要存放节点的数据,如一些token和证书。...注释掉或者改为false,重启k8s服务 systemctl restart kubelet.service V2版本利用: 直接访问http://ip:2379/v2/keys/?...-只能本地访问,直接未授权访问获取secrets和token利用 第三种:实战中在安装k8s默认的配置2379只会监听本地,如果访问没设置0.0.0.0暴露,那么也就意味着最多就是本地访问,不能公网访问...kubernetes dashboard的未授权其实分两种情况: 一种是在本身就存在着不需要登录的http接口,但接口本身并不会暴露出来,如接口被暴露在外,就会导致dashboard未授权。...文件,操作集群,从而接管所有容器。

    15010

    后Kubernetes时代的虚拟机管理技术之kubevirt篇

    通过CRD机制,kubevirt可以自定义额外的操作,来调整常规容器中不可用的行为。kubevirt可以使用容器的image registry去创建虚拟机并提供VM生命周期管理。...virt-api:kubevirt是以CRD形式去管理VM Pod,virt-api就是所有虚拟化操作的入口,这里面包括常规的CDR更新验证、以及console、vm start、stop等操作。...与kubernetes api-server通讯监控VMI资源的创建删除等状态。...virt-launcher:每个virt-launcher pod对应着一个VMI,kubelet只负责virt-launcher pod运行状态,不会去关心VMI创建情况。...服务发现 Virtual-Kubelet,通过Provider实现的API将IaaS层VM信息抽象成对应Pod对象的信息的方式来上报Endpoints,可以通过给CR添加no selector Service

    1.6K20

    后Kubernetes时代的虚拟机管理技术之kubevirt篇

    通过CRD机制,kubevirt可以自定义额外的操作,来调整常规容器中不可用的行为。kubevirt可以使用容器的image registry去创建虚拟机并提供VM生命周期管理。...virt-api:kubevirt是以CRD形式去管理VM Pod,virt-api就是所有虚拟化操作的入口,这里面包括常规的CDR更新验证、以及console、vm start、stop等操作。...与kubernetes api-server通讯监控VMI资源的创建删除等状态。...virt-launcher:每个virt-launcher pod对应着一个VMI,kubelet只负责virt-launcher pod运行状态,不会去关心VMI创建情况。...服务发现 Virtual-Kubelet,通过Provider实现的API将IaaS层VM信息抽象成对应Pod对象的信息的方式来上报Endpoints,可以通过给CR添加no selector Service

    1.6K61
    领券