当前我尝试将KubeVirt
与GKE
集群一起使用。
我所做的(遵循官方文件(:
- 通过GCP控制台创建具有3个节点的
GKE
集群 - 本地安装
kubectl
并连接到此群集 - 通过
kubectl
安装kubevirt
- 本地安装
virtctl
- 将
debug.useEmulation
设置为true
- 创建
testvm
(按照演示(以上所有步骤都很好
但现在我有麻烦启动vm
- 如果我尝试通过
"virtctl start testvm"
启动它,我会收到以下错误消息:
"启动VirtualMachine时出错,服务器要求客户端提供凭据">
- 如果我试图修改VM模板以使其默认运行,它也不起作用。在
virt-launcher
pod中,计算容器成功启动,但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}}'