我将k3d与calico一起使用,并试图使用calicoctl设置网络策略。我可以让它在Ubuntu上工作,但在Windows上却不能。
# Download Calico YAML
# DOWNLOAD: https://raw.githubusercontent.com/rancher/k3d/main/docs/usage/guides/calico.yaml
# Create k3d cluster
k3d cluster create "dev" --k3s-server-arg '--flannel-backend=none' --volume "$(pwd)/calico.yaml:/var/lib/rancher/k3s/server/manifests/calico.yaml
# Download Windows version
# DOWNLOAD: https://github.com/projectcalico/calicoctl/releases/download/v3.18.2/calicoctl-windows-amd64.exe
# Make an Alias
Set-Alias -Name calicoctl -Value ".\calicoctl-windows-amd64.exe"然后,当我尝试使用NetWorkPolicy应用calicoctl apply -f my-policy.yaml时,我得到了错误:
创建Calico客户端失败:配置无效:未提供配置,请尝试设置KUBERNETES_MASTER环境变量
所以我试着用Kubeconfig的值来设置它:
# Get the IP/Port from Kubeconfig (Gives https://0.0.0.0:60776)
$kmaster=(kubectl config view -o jsonpath="{.clusters[?(@.name=='k3d-dev')].cluster.server}")
# Set the kubernetes master env variable from what's in kube config
[Environment]::SetEnvironmentVariable(“KUBERNETES_MASTER”, $kmaster, “User”)这仍然会导致同样的错误。(注: Kubeconfig的ip为“https://0.0.0.0:60776"”)
于是,我尝试了以下所有的方法,但没有一种有效:
set KUBECONFIG=~/.kube/config
SET CALICO_KUBECONFIG=C:\Users\myname\.kube\config
SET KUBE_CONFIG_PATH=C:\Users\myname\.kube\config
$env:KUBERNETES_MASTER=(kubectl config view -o jsonpath="{.clusters[?(@.name=='k3d-dev')].cluster.server}")如何让"calicoctl-windows-amd64.exe“找到我的Kubernetes集群?
发布于 2021-04-28 01:23:17
而官方的文档声称:
~/.kube/config中查找配置KUBERNETES_MASTER (错误输出声明如下)KUBECONFIG不是的!上述任何一项都不适用于Windows。(在Ubuntu上,我不需要做任何特别的事情,它找到了我的配置)
我找到的唯一解决办法是执行以下操作:
calicoctl调用中传递配置文件calico.cfg.yaml
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
datastoreType: "kubernetes"
kubeconfig: "C:/users/myusername/.kube/config"注意:如果您传递“~/..kube/config”,它将失败,并说它找不到该路径。
现在调用它需要:
# NOTICE THE "--config=calico.cfg.yaml"
calicoctl apply -f some-policy.yaml --config=calico.cfg.yaml我认为,从配置文件正常工作但使用"~/.kube/config"作为kubeconfig路径时抛出一个错误来判断,正在查找“默认”路径,但使用的是不理解~别名的Windows。
发布于 2022-03-03 11:57:10
我尝试了上面提到的三种选择,我发现第三种选择对我有效。
以下是我遵循的步骤:
$env:KUBECONFIG="C:\Users\myusername\.kube\config"calicoctl get ippools注意:我使用calicoctl版本v3.22.0
https://stackoverflow.com/questions/67291087
复制相似问题