跳至内容

从源代码构建

建议使用 从二进制文件安装 进行正常的 kOps 操作。但是,如果您想从源代码构建,则非常简单

如果您没有 GOPATH

mkdir ~/kops
cd ~/kops
export GOPATH=`pwd`

签出并构建代码

go get -d k8s.io/kops
cd ${GOPATH}/src/k8s.io/kops/
git checkout release
make
  • release 分支是发行版取自的地方。这是稳定的代码分支。
  • master 分支也应该可以正常使用,但这里是积极开发的地方,因此可能不太稳定。

交叉编译

现在,通过 make nodeup 自动完成像 nodeup 这样的交叉编译。make push-aws-run-amd64 TARGET=admin@$TARGET 将自动从您的 .build 目录中选择 linux amd64 构建。

调试

要启用交互式调试,需要专门编译 kOps 二进制文件以包含调试符号。将 DEBUGGING=true 添加到 make 调用中以适当地设置编译标志。

例如,DEBUGGING=true make 将生成一个可以交互式调试的 kOps 二进制文件。

使用 Delve 进行交互式调试

Delve 可用于交互式调试 kOps 二进制文件。安装 Delve 后,您可以直接使用它,也可以以无头模式运行它以供交互式开发环境 (IDE) 使用。

例如,运行 dlv --listen=:2345 --headless=true --api-version=2 exec ${GOPATH}/bin/kops -- <kops command>,然后配置您的 IDE 将其调试器连接到本地主机的端口 2345。

故障排除

  • 确保设置了 $GOPATH 并且您的 工作区 已配置。
  • kOps 不会在 $GOPATH 中使用符号链接进行编译。有关详细信息,请参阅 go 问题 17451
  • 构建 kops 需要 go 1.15
  • 仅当源代码在 $GOPATH/src/k8s.io/kops 中签出时,kOps 才会编译。如果您尝试使用 $GOPATH/src/github.com/kubernetes/kops,则会遇到包导入无法按预期工作的错误。