惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
宝玉的分享
宝玉的分享
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
IT之家
IT之家
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Threatpost
Cyberwarzone
Cyberwarzone
AWS News Blog
AWS News Blog
博客园 - 司徒正美
C
Cyber Attacks, Cyber Crime and Cyber Security
Latest news
Latest news
S
Secure Thoughts
S
Schneier on Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
S
Security Affairs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hacker News: Ask HN
Hacker News: Ask HN
大猫的无限游戏
大猫的无限游戏
博客园_首页
S
Security @ Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
A
Arctic Wolf
AI
AI
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
Project Zero
Project Zero
P
Proofpoint News Feed
T
Tor Project blog
P
Privacy International News Feed
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
月光博客
月光博客
Forbes - Security
Forbes - Security
量子位
I
Intezer
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
P
Proofpoint News Feed
T
The Exploit Database - CXSecurity.com
腾讯CDC
N
Netflix TechBlog - Medium
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
Lohrmann on Cybersecurity
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

Hi,I`m lan

MCP协议新进展: 使用 Streamable HTTP 替换当前的 HTTP+SSE 实现。-liangyuanpeng 的博客 我的 AI 员工们开发的微信小程序上线了!-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog vercel 记录-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog [长期更新]cocos creator问题列表-liangyuanpeng 的博客 | liangyuanpeng's Blog go问题列表记录-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog node镜像的更多选择-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog containerd 中的弃用警告 - 为 2.0 做好准备!-liangyuanpeng 的博客 liangyuanpeng 的博客 | liangyuanpeng's Blog kep-1880-多服务CIDR-liangyuanpeng 的博客 | liangyuanpeng's Blog [长期更新]argoworkflow 的一些实践和思考-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 将Etcd作为一个kubernetes sig来运作-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog argoworkflow 云原生工作流引擎-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog kubecon china 2023将在上海举办-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 从零到 Kubernetes 子项目负责人-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog Kubernetes HPA:定制指标实现有效的CPU和内存扩展-liangyuanpeng 的博客 | liangyuanpeng's Blog JFrog 向 CD 基金会授予开源 Pyrsia-liangyuanpeng 的博客 helmchart发布v2.10.1-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog ingress浅试-liangyuanpeng 的博客 | liangyuanpeng's Blog gateway-liangyuanpeng 的博客 | liangyuanpeng's Blog 1.24.0发布-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 部署去ZK后的Apache Pulsar-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 用GO开发Envoy wasm filter-liangyuanpeng 的博客 | liangyuanpeng's Blog 用Rust开发Envoy wasm filter-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog v1.18.3发布-liangyuanpeng 的博客 | liangyuanpeng's Blog v1.20.0-beta.1发布-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog Bookkeeper-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog Bookkeeper开发环境搭建-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog webhook开发技巧-liangyuanpeng 的博客 | liangyuanpeng's Blog 部署在线的lank8s webhook之后,不再为k8s.gcr.io/gcr.io镜像苦恼-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 部署metrics-server,把kubectl top用起来-liangyuanpeng 的博客 | liangyuanpeng's Blog v1.9.0发布-liangyuanpeng 的博客 | liangyuanpeng's Blog v1.19.1发布-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog KubeSphere使用Contour Ingress作为项目网关-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 宣布Contour v1.13.0-liangyuanpeng 的博客 | liangyuanpeng's Blog [了解Rust基金会]介绍Mark Rousskov-liangyuanpeng 的博客 | liangyuanpeng's Blog [了解Rust基金会]介绍Tyler Mandry-liangyuanpeng 的博客 | liangyuanpeng's Blog [了解Rust基金会]介绍Bobby Holley-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog [了解Rust基金会]介绍Shane Miller-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog prometheus-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 使用Cloudflare pages部署静态博客-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog
liangyuanpeng 的博客 | liangyuanpeng's Blog
2023-09-02 · via Hi,I`m lan

TOC

声明

本文会持续的更新,提出一些问题用于研究 kubernetes 原理/源码.欢迎投稿加入你感兴趣的问题 :)

类似的文章有:

etcd 当中存储了 kubernetes 什么数据?

(有可能会单独整理成一篇文章,但目前只是一个回答)

这个问题的部分背景:

接下来进入正文.

kubernetes 的数据以 /registry 开头存储在 etcd 当中,如果直接查询 etcd 中的数据会发现数据是对人不友好的.这是因为默认情况下存储进去的数据默认是以 protobuf 二进制的方式存储的,因此数据是没办法直接看的,另一个情况是使用了数据加密,也就是在存储到 etcd 之前 kube-apiserver 对数据进行了加密,这时候也是无法直接查看数据的,但这个回答不包括加密的情况,可能会在后续单独文章中来介绍,如果你对数据加密感兴趣,可以看看Kubernetes 中允许允许用户编辑的持久 API 资源数据的所有 API 都支持静态加密

由于 kubernetes 当中只有 kube-apiserver 与 etcd 进行通讯,因此尝试从 kube-apiserver 找到一些线索: 有一个 --storage-media-type 参数是标识数据存储的格式,默认情况下是 application/vnd.kubernetes.protobuf,可选的值有: application/json, application/yaml以及application/vnd.kubernetes.protobuf.

因此如果想研究 kubernetes 在 etcd 的数据,我的建议是 用 Kind 创建一个 kubernetes,然后给 kube-apiserver 添加启动参数 --storage-media-type=application/json, 这样就可以在 etcd 轻松的看到 kube-apiserver 存储到 etcd 的是什么数据了.

下面是一个 service 的数据(由于我修改了默认的存储前缀,因此不是以 /registry 开头):

# etcdctl --endpoints http://172.18.0.2:14379 get /dev/20230902/0952/services/specs/kube-system/kube-dns
/dev/20230902/0952/services/specs/kube-system/kube-dns
{
    "kind":"Service",
    "apiVersion":"v1",
    "metadata":{
        "name":"kube-dns",
        "namespace":"kube-system",
        "uid":"5a81d246-ffb1-440a-aa8e-d3ebca7c1dec",
        "creationTimestamp":"2023-09-02T12:04:29Z",
        "labels":{
            "k8s-app":"kube-dns",
            "kubernetes.io/cluster-service":"true",
            "kubernetes.io/name":"CoreDNS"
        },
        "annotations":{
            "prometheus.io/port":"9153",
            "prometheus.io/scrape":"true"
        },
        "managedFields":[
            {
                "manager":"kubeadm",
                "operation":"Update",
                "apiVersion":"v1",
                "time":"2023-09-02T12:04:29Z",
                "fieldsType":"FieldsV1",
                "fieldsV1":{
                    "f:metadata":{
                        "f:annotations":{
                            ".":{

                            },
                            "f:prometheus.io/port":{

                            },
                            "f:prometheus.io/scrape":{

                            }
                        },
                        "f:labels":{
                            ".":{

                            },
                            "f:k8s-app":{

                            },
                            "f:kubernetes.io/cluster-service":{

                            },
                            "f:kubernetes.io/name":{

                            }
                        }
                    },
                    "f:spec":{
                        "f:clusterIP":{

                        },
                        "f:internalTrafficPolicy":{

                        },
                        "f:ports":{
                            ".":{

                            },
                            "k:{\"port\":53,\"protocol\":\"TCP\"}":{
                                ".":{

                                },
                                "f:name":{

                                },
                                "f:port":{

                                },
                                "f:protocol":{

                                },
                                "f:targetPort":{

                                }
                            },
                            "k:{\"port\":53,\"protocol\":\"UDP\"}":{
                                ".":{

                                },
                                "f:name":{

                                },
                                "f:port":{

                                },
                                "f:protocol":{

                                },
                                "f:targetPort":{

                                }
                            },
                            "k:{\"port\":9153,\"protocol\":\"TCP\"}":{
                                ".":{

                                },
                                "f:name":{

                                },
                                "f:port":{

                                },
                                "f:protocol":{

                                },
                                "f:targetPort":{

                                }
                            }
                        },
                        "f:selector":{

                        },
                        "f:sessionAffinity":{

                        },
                        "f:type":{

                        }
                    }
                }
            }
        ]
    },
    "spec":{
        "ports":[
            {
                "name":"dns",
                "protocol":"UDP",
                "port":53,
                "targetPort":53
            },
            {
                "name":"dns-tcp",
                "protocol":"TCP",
                "port":53,
                "targetPort":53
            },
            {
                "name":"metrics",
                "protocol":"TCP",
                "port":9153,
                "targetPort":9153
            }
        ],
        "selector":{
            "k8s-app":"kube-dns"
        },
        "clusterIP":"10.96.0.10",
        "clusterIPs":[
            "10.96.0.10"
        ],
        "type":"ClusterIP",
        "sessionAffinity":"None",
        "ipFamilies":[
            "IPv4"
        ],
        "ipFamilyPolicy":"SingleStack",
        "internalTrafficPolicy":"Cluster"
    },
    "status":{
        "loadBalancer":{

        }
    }
}

kubernetes 的 resourceVersion 是什么?

TODO:

  1. kubectl 命令展示 resourceVersion
  2. 查看 etcd 中对应的数据,如何找到与 resourceVersion 对应的数据(就是 etcd 的 ModRevision)
  3. 开发 operator 时可能会碰到的与 resourceVersion 相关的问题: 并发修改资源

说明 resourceVersion 不是和数据一起存储在 etcd 里面的,而是直接使用了 etcd kv 的 ModRevision 字段.

kubernetes 新功能 watchList 和已经广泛使用的 ListWatch 有什么区别?

理解kubernetes中的CEL

这个会单独输出一篇文章,但目前还没完成.

如何为 kubernetes 贡献新的系统架构

例如我希望 kubernetes 原生支持 龙芯/RISC-V 架构的话怎么办? 通常作为开源项目的维护者希望可以在 CI 系统中持续的为项目支持的所有架构检查问题,因此并不是说修改几行代码让 kubernetes 支持龙芯/RISC-V 就完事了,而是需要有志愿者维护对应架构的 CI 系统,保证项目在发展过程中可以稳定的运行在所支持的架构上.

IBM 为 kubernetes 维护了 ppc64le 架构的 CI 系统,可以在 https://github.com/ppc64le-cloud 找到一些相关信息.

我对 kubernetes 运行在 龙芯/RISC-V 上感兴趣,目前也有兴趣维护对应的 CI 系统,但需要有人/供应商提供对应架构的机器,如果你可以帮助到我,那请联系我! 在 https://liangyuanpeng.com/ 可以找到我的微信二维码:)

题外话: 俄勒冈州立大学开源实验室为一些开源项目提供了一些 POWER 机器和 AARCH64 机器用于 CI,简直是不可思议! 相关: - https://osuosl.org/services/powerdev/ - https://osuosl.org/services/aarch64/

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode