我正在修改kubelet
的源代码。
为了编译,我可以做make quick-release
。我可以从kubelet
_output
然后我用新的可执行文件替换原始/usr/bin/kubelet
,但是当我运行kubeadm init
时,它会给我错误消息:
[preflight] Some fatal errors occurred:
[ERROR KubeletVersion]: couldn't get kubelet version: Unable to parse output from Kubelet: "Kubernetes v0.0.0-master+$Format:%h$"
我认为必须有一种标准的方法来编译和部署Kubernetes。我的googled资源主要是关于在Kubernetes上开发应用程序。任何人都可以给我一个指南或给一些关键词,以便我可以自己谷歌吗?
由于
-
更新
我替换了kubelet
env。
minikube
我得到了许可错误。
W0613 16:34:55.917805 26616 status_manager.go:496] Failed to update status for pod "kube-apiserver-minikube_kube-system(5ff9a836-6f27-11e8-8667-080027c176b2)": failed to patch status "{\"status\":{\"$setElementOrder/conditions\":[{\"type\":\"Initialized\"},{\"type\":\"Ready\"},{\"type\":\"PodScheduled\"}],\"conditions\":[{\"lastTransitionTime\":\"2018-06-13T16:34:51Z\",\"status\":\"True\",\"type\":\"Ready\"}]}}" for pod "kube-system"/"kube-apiserver-minikube": pods "kube-apiserver-minikube" is forbidden: User "system:node:minikube" cannot patch pods/status in the namespace "kube-system"
-
再次更新
我发现它是版本不一致的问题。
一旦我在minikube git checkout v1.10.0
中签出相同版本的Kubernete,问题就解决了。
答案 0 :(得分:2)
尝试
cd $GOPATH/src/k8s.io/kubernetes
make clean
# use the version you used, like v1.9.2-123
git tag v1.x.x-xxxx
make kubelet
# should show the above tag
_output/bin/kubelet --version
如果您刚刚修改了单个组件的源代码,则不需要make quick-release
,只需make <componenet_name>
(例如,make kubelet
,make kube-proxy
。 ..)。而且你只需要标记一次(在对源代码进行新的更改后标记应该在那里)。