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

推荐订阅源

Google DeepMind News
Google DeepMind News
B
Blog
博客园 - 三生石上(FineUI控件)
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
Vercel News
Vercel News
量子位
A
About on SuperTechFans
博客园 - 聂微东
WordPress大学
WordPress大学
D
DataBreaches.Net
The Cloudflare Blog
M
MIT News - Artificial intelligence
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
雷峰网
雷峰网
C
Check Point Blog
S
SegmentFault 最新的问题
U
Unit 42
月光博客
月光博客
Apple Machine Learning Research
Apple Machine Learning Research

Hunsh's Blog

生成个人的 Github PR List 如何选择合适的加密手段 Nginx SNI Proxy Make Go mod and Git to use specify .netrc 多架构镜像的体积优化 使用 buildkit 进行多架构构建并提取产物 如何修改镜像 layer(以 sourcemap-less grafana 为例) acme.sh 自动化 Google CA 申请证书 微信小程序嵌入任意公众号文章 k8s && bazel 项目从 go1.20 升级 go1.21 go serve http and https on same port typecho 迁移到 hexo 实现 hexo 文章和资源在同一目录下 golang mitm 遇到的问题 流式数据专用的 mine-type Golang 正向代理对于 Host 的处理 (RFC 7230) 分享 MacOS 的一些系统fix脚本(dns、sleep) prometheus rate/increase/delta/sum等函数不符合预期或出现小数的原理 [油猴脚本] USTB Everywhere 为校外访问添加访问任意网站的能力
如何优雅导入 k8s.io/kubernetes
2024-09-16 · via Hunsh's Blog

kubernetes 项目结构

主仓库一般简称为 k/k,当前使用 go work 进行项目组织。

staging/src/k8s.io/* 将由 publishing-bot 发布到 github.com/kubernetes/*(importpath k8s.io/*)。

Use of the k8s.io/kubernetes module or k8s.io/kubernetes/… packages as libraries is not supported.

k/k 的导入将不会得到支持。

问题

但是在实际使用中,某些情况依然会需要导入 k/k 的代码,比如使用 Custom Scheduler Plugin

社区讨论后,k/k 的导入不受支持的问题得到明确。

现状

如果我们需要导入 k/k,需要从 k/kgo.mod 复制所有的 replace 并且替换 version 为所需版本。这很丑而且很麻烦。
一个例子就是 kube-scheduler-simulator

解决方案

按照上方 issue 的讨论,其实只需要让 k/k,不使用 replace,而是将 k8s.io/* 版本固定到发布的版本即可。

我写了一个工具专门来完成这个事情:kksyncer

只需要一次替换即可导入 k/k

example:

1
2
3
4
5
6
7
8
// in go.mod
require (
k8s.io/kubernetes v1.29.0
)

replace (
k8s.io/kubernetes => github.com/hunshcn/kubernetes v1.29.0-mod
)

Notice: Only version >= 1.26.0 will be provided.