随笔分类 -  k8s

上一页 1 2 3 4 5 6 7 8 下一页

kubelet删除pod异步操作
摘要:基本流程 1. kube-apiserver把Pod设置为Terminating状态。2. 从Service中异步删除Endpoint。3. 异步执行preStop Hook。4. 异步发送SIGTERM信号。5. 等待terminationGracePeriodSeconds(默认值为 30 秒) 阅读全文

posted @ 2023-09-19 22:15 王景迁 阅读(62) 评论(0) 推荐(0)

k8s限速队列源码分析
摘要:channel问题 channel是go协程间通信的主要方式。channel预设容量,很难评估,不支持动态扩容。k8s的client-go提供了基于切片的线程安全的并发队列,解耦生产者与消费者,提供了去重、限速、重试加入队列等功能。 k8s controller处理事件官方例子 生产者 // 创建一 阅读全文

posted @ 2023-09-16 16:10 王景迁 阅读(454) 评论(0) 推荐(0)

k8s controller选主
摘要:controller选主代码实现 controller多实例可能状态1 抢锁成功,作为Leader跑业务2 抢锁失败等待3 释放锁,结束 k8s官方例子go.mod和主流程 module controller-by-leader-election go 1.19 require ( github.c 阅读全文

posted @ 2023-09-16 11:05 王景迁 阅读(178) 评论(0) 推荐(0)

调整节点部署pod数上限
摘要:默认单节点部署pod数上限是110,超过时会调度失败。 vim /var/lib/kubelet/config.yamlmaxPods: 300systemctl restart kubelet 阅读全文

posted @ 2023-09-16 09:27 王景迁 阅读(81) 评论(0) 推荐(0)

高版本kube-apiserver删除namespace
摘要:确认namespace下没有资源 kubectl get all -n my-namespace kubectl delete namespace my-namespace 调用kube-apiserver PUT接口去掉namespace中的finalizer kubectl proxy & PI 阅读全文

posted @ 2023-09-15 08:59 王景迁 阅读(27) 评论(0) 推荐(0)

基于scheduler framework开发自定义调度器
摘要:k8s v1.19.0基于scheduler framework开发插件,本质上是实现接口。 下载代码 mkdir sigs.k8s.io cd sigs.k8s.io git clone https://github.com/kubernetes-sigs/scheduler-plugins.gi 阅读全文

posted @ 2023-08-12 20:14 王景迁 阅读(551) 评论(0) 推荐(0)

k8s etcd operator
摘要:k8s v1.15.0 在k8s生态中,Operator是灵活管理有状态应用的解决方案。operator通过crd来描述部署的有状态应用和自定义控制器来完成部署和运维工作。 EtcdOperator部署Etcd集群,采用的是静态集群的方式。好处是不必依赖一个额外的服务发现机制来组建集群,适合本地容器 阅读全文

posted @ 2023-08-12 16:02 王景迁 阅读(136) 评论(0) 推荐(0)

k8s finalizers和owner references
摘要:finalizers 终结器,存放键的列表,列表内的键为空时资源才可被删除。删除指定了Finalizer的对象时,填充.metadata.deletionTimestamp来标记要删除的对象,返回已接受202状态码使其进入只读状态。 # 创建包含finalizers的configmap cat << 阅读全文

posted @ 2023-08-12 14:49 王景迁 阅读(449) 评论(0) 推荐(0)

k8s timeoutSeconds无效且没有按照periodSeconds的间隔时间来执行健康检查
摘要:健康检查日志没有严格按照periodSeconds间隔时间来打印。 核心代码如下: pkg/kubelet/prober/worker.go pkg/kubelet/prober/prober.gorunProbe方法(kubelet健康检查有3种方式) httpGet发送HTTP 请求,返回码介于 阅读全文

posted @ 2023-07-30 23:23 王景迁 阅读(185) 评论(0) 推荐(0)

kubeconfig内容分析
摘要:kubeconfig默认在~/.kube/config,主要包括certificate-authority-data根证书、client-certificate-data客户端证书、client-key-data客户端私钥、context上下文、server即kube-apiserver IP和端口 阅读全文

posted @ 2023-07-23 10:14 王景迁 阅读(175) 评论(0) 推荐(0)

kubelet backoff源码分析
摘要:容器拉起流程 为了避免容器频繁拉起,kubelet通过backoff来限制(backoff表示上次容器退出时间与再次创建间隔时间,lastUpdate表示上次容器创建时间,backoff和lastUpdate只会在Next函数中会更新):Pod中重启容器时(周期性执行SyncPod函数),Pod通过 阅读全文

posted @ 2023-07-16 10:57 王景迁 阅读(180) 评论(0) 推荐(0)

调试kubelet
摘要:方法1:goland+dlv远程调试kubelet Goland配置 cd到main函数所在的go文件目录 执行下面命令等待2分钟左右,等待时间长是因为资源不足,直到出现API server listening at: [::]:8033 /root/Downloads/dlv debug --he 阅读全文

posted @ 2023-07-16 10:43 王景迁 阅读(188) 评论(0) 推荐(0)

kubelet健康检查的3种方式
摘要:httpGet 发送一个 HTTP 请求,当返回码介于 200~400 之间时,检查成功。 livenessProbe: httpGet: path: /index.html port: 80 httpHeaders: - name: X-Custom-Header value: Awesome i 阅读全文

posted @ 2023-07-16 10:41 王景迁 阅读(80) 评论(0) 推荐(0)

容器网络域名解析
摘要:使用service的原因 1. Pod的IP不是固定的。2. Pod实例之间需要负载均衡。 部署Service和Deploy 使用selector字段来声明这个Service只代理携带了app=hostnames标签的Pod。这个Service的80端口,代理的是Pod的9376端口。 apiVer 阅读全文

posted @ 2023-07-16 10:35 王景迁 阅读(135) 评论(0) 推荐(0)

ipvs
摘要:iptables的缺点和ipvs的优点 当宿主机上有大量Pod时,大量iptables规则不断被刷新,占用大量CPU。ipvs采用了hash数据结构,比iptables更加高效。当创建了Service后,kube-proxy在每个宿主机上创建一个虚拟网卡(名字是kube-ipvs0),每个网卡上配置 阅读全文

posted @ 2023-07-16 10:21 王景迁 阅读(470) 评论(0) 推荐(0)

flannel配置
摘要:flannel Pod挂载了ConfigMap kube-flannel-cfg 阅读全文

posted @ 2023-07-16 10:12 王景迁 阅读(16) 评论(0) 推荐(0)

StatefulSet
摘要:有状态应用 实例之间有不对等关系,以及实例对外部数据有依赖关系的应用,就被称为“有状态应用”。 Pod管理策略 通过.spec.podManagementPolicy 字段来管理 Pod。OrderedReady:严格遵循 Pod 顺序来启停,默认设置。Parallel:告诉 StatefulSet 阅读全文

posted @ 2023-07-16 10:03 王景迁 阅读(97) 评论(0) 推荐(0)

Deployment、ReplicaSet和Pod三者关系
摘要:Deployment控制ReplicaSet(版本),ReplicaSet控制Pod(副本数)。 更新策略 Recreate 删除所有已存在的pod,重新创建新的; RollingUpdate 滚动升级spec.minReadySeconds: 新建Pod状态保持Ready持续时间的最小值,才被认为 阅读全文

posted @ 2023-07-16 09:59 王景迁 阅读(120) 评论(0) 推荐(0)

list watch机制
摘要:3点需求 只需要感知数据最新的状态,不担心错过数据的变化过程。需求1: 实时性(即数据变化时,相关组件越快感知越好)需求2: 保证消息的顺序性(即消息要按发生先后顺序送达目的组件。很难想象在Pod创建消息前收到该Pod删除消息时组件应该怎么处理)需求3: 保证消息不丢失或者有可靠的重新获取机制(比如 阅读全文

posted @ 2023-07-16 09:55 王景迁 阅读(608) 评论(0) 推荐(0)

Pod生命周期
摘要:在内容更新且发生变化时,resourceVersion(从etcd最新版本号开始)变成etcd最新版本号+1;不同于pod,pod控制器和cr都有generation,从1开始,会加1。 创建Pod内容器 删除Pod资源 status.phase status.phase是Pod的当前状态。 Pha 阅读全文

posted @ 2023-07-16 09:45 王景迁 阅读(30) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 下一页

导航