我正在尝试在多节点上部署spinnaker。我有2个VM:第一个有halyard和kubectl,第二个包含kubernetes master api。 我的kubectl配置得很好,能够与远程kubernetes api进行通信,
“kubectl get namespaces”工作
kubectl get namespaces
NAME STATUS AGE
default Active 16d
kube-public Active 16d
kube-system Active 16d
但是当我运行这个cmd时
hal config provider -d kubernetes account add spin-kubernetes --docker-registries myregistry
I get this error
Add the spin-kubernetes account
Failure
Problems in default.provider.kubernetes.spin-kubernetes:
- WARNING You have not specified a Kubernetes context in your
halconfig, Spinnaker will use "default-system" instead.
? We recommend explicitly setting a context in your halconfig, to
ensure changes to your kubeconfig won't break your deployment.
? Options include:
- default-system
! ERROR Unable to communicate with your Kubernetes cluster:
Operation: [list] for kind: [Namespace] with name: [null] in namespace:
[null] failed..
? Unable to authenticate with your Kubernetes cluster. Try using
kubectl to verify your credentials.
- Failed to add account spin-kubernetes for provider
kubernetes.
答案 0 :(得分:0)
从错误消息中可以看出有两种方法,将halconfig设置为与默认系统上下文通信,这样它就可以与您的集群通信,或者相反,即配置您的上下文。
试试这个:
kubectl config view
我想你会看到那里的上下文和当前上下文是默认系统,尝试改变它们。 如需更多帮助
kubectl config --help
我猜您正在寻找set-context选项。 希望有所帮助。
答案 1 :(得分:0)
如@Naim Salameh所述,您可以在halconfig中设置此项。
另一种方法是尝试在默认的Kubernetes配置~/.kube/config
中设置K8S群集信息。
由于您在不同的虚拟机上运行halyard
和kubectl
,因此无法确定这是否有效。
# ~/.kube/config
apiVersion: v1
clusters:
- cluster:
server: http://my-kubernetes-url
name: my-k8s-cluster
contexts:
- context:
cluster: my-k8s-cluster
namespace: default
name: my-context
current-context: my-context
kind: Config
preferences: {}
users: []