无法使用带有GKE的KubeVirtualt运行启动VM



当前我尝试将KubeVirtGKE集群一起使用。

我所做的(遵循官方文件(:

  1. 通过GCP控制台创建具有3个节点的GKE集群
  2. 本地安装kubectl并连接到此群集
  3. 通过kubectl安装kubevirt
  4. 本地安装virtctl
  5. debug.useEmulation设置为true
  6. 创建testvm(按照演示(以上所有步骤都很好

但现在我有麻烦启动vm

  1. 如果我尝试通过"virtctl start testvm"启动它,我会收到以下错误消息:

"启动VirtualMachine时出错,服务器要求客户端提供凭据">

  1. 如果我试图修改VM模板以使其默认运行,它也不起作用。在virt-launcherpod中,计算容器成功启动,但volumecontainerdisk失败,日志如下:
standard_init_linux.go:211: exec user process caused "permission denied"

感谢您的帮助。

使用gcloud container clusters get-credentials...从本地连接到集群时,默认的GKE身份验证方法似乎存在问题。

对我来说有效的是创建一个新的SA并为其创建一个kubeconfig:

{
kubectl create sa deployer
kubectl create clusterrolebinding deployer --clusterrole cluster-admin --serviceaccount default:deployer
KUBE_DEPLOY_SECRET_NAME=`kubectl get sa deployer -o jsonpath='{.secrets[0].name}'`
KUBE_API_EP=`kubectl get ep -o jsonpath='{.items[0].subsets[0].addresses[0].ip}'`
KUBE_API_TOKEN=`kubectl get secret $KUBE_DEPLOY_SECRET_NAME -o jsonpath='{.data.token}'|base64 --decode`
KUBE_API_CA=`kubectl get secret $KUBE_DEPLOY_SECRET_NAME -o jsonpath='{.data.ca.crt}'|base64 --decode`
echo $KUBE_API_CA > tmp.deploy.ca.crt
export KUBECONFIG=./my-new-kubeconfig
kubectl config set-cluster k8s --server=https://$KUBE_API_EP --certificate-authority=tmp.deploy.ca.crt --embed-certs=true
kubectl config set-credentials k8s-deployer --token=$KUBE_API_TOKEN
kubectl config set-context k8s --cluster k8s --user k8s-deployer
kubectl config use-context k8s
rm tmp.deploy.ca.crt
unset KUBECONFIG
}
kubectl virt start testvm --kubeconfig ./my-new-kubeconfig

更多解释:https://faun.pub/manually-connect-to-your-kubernetes-cluster-from-the-outside-d852346a7f0a

通过使用kubectl更新vm的清单,可以在没有virtctl的情况下启动vm

kubectl patch virtualmachine testvm --type merge -p '{"spec":{"running":true}}'

最新更新