Go 使用kube客户端创建hostPath持久卷

Go 使用kube客户端创建hostPath持久卷,go,kubernetes,persistent-volumes,Go,Kubernetes,Persistent Volumes,我正在使用go k8s kube客户端。我正在尝试在集群中创建一个持久卷。我想使用hostPath类型。然而,我找不到任何关于如何在go中实现这一点的文档。我有以下代码 vl:=v1.PersistentVolume{ 规格:v1.PersistentVolumeSpect{ //VolumeMode:v1.PersistentVolumeMode(), StorageClassName:“手动”, 访问模式:[]v1.PersistentVolumeAccessMode{ “ReadWrit

我正在使用go k8s kube客户端。我正在尝试在集群中创建一个持久卷。我想使用hostPath类型。然而,我找不到任何关于如何在go中实现这一点的文档。我有以下代码


vl:=v1.PersistentVolume{
规格:v1.PersistentVolumeSpect{
//VolumeMode:v1.PersistentVolumeMode(),
StorageClassName:“手动”,
访问模式:[]v1.PersistentVolumeAccessMode{
“ReadWriteMany”,
},
容量:v1.ResourceList{
v1.ResourceName(v1.ResourceStorage):resource.MustParse(“2Gi”),
},
},
}
vl.Name=“golang演示存储”
如果我尝试按原样创建上述永久卷,我会得到一个错误,即
PersistentVolume“golang demo storage”无效:spec:Required value:必须指定一个卷类型
,因为我必须定义一个类型

但是,我找不到任何关于在结构中的何处实际定义主机路径的文档


你有什么可以帮助我的参考资料吗?

所以我看错了字段。我要查看的字段是
persistentVolumeSpect
中的
PersistentVolumeSource
。下面是对我有用的代码片段


ctx:=context.TODO()
vl:=v1.PersistentVolume{
TypeMeta:metav1.TypeMeta{Kind:“PersistentVolume”},
ObjectMeta:metav1.ObjectMeta{
姓名:姓名,,
},
规格:v1.PersistentVolumeSpect{
//VolumeMode:v1.PersistentVolumeMode(),
StorageClassName:“手动”,
访问模式:[]v1.PersistentVolumeAccessMode{
“ReadWriteMany”,
},
容量:v1.ResourceList{
v1.ResourceName(v1.ResourceStorage):resource.MustParse(“2Gi”),
},
PersistentVolumeSource:v1.PersistentVolumeSource{
主机路径:&v1.HostPathVolumeSource{
路径:“/demo”,
},
},
},
}
_,e:=clientset.CoreV1().PersistentVolumes().Create(ctx,&vl,metav1.CreateOptions{})

我必须定义一个
PersistentVolumeSource
字段,在初始化过程中,我传递了所需的主机路径配置,因此我查看了错误的字段。我要查看的字段是
persistentVolumeSpect
中的
PersistentVolumeSource
。下面是对我有用的代码片段


ctx:=context.TODO()
vl:=v1.PersistentVolume{
TypeMeta:metav1.TypeMeta{Kind:“PersistentVolume”},
ObjectMeta:metav1.ObjectMeta{
姓名:姓名,,
},
规格:v1.PersistentVolumeSpect{
//VolumeMode:v1.PersistentVolumeMode(),
StorageClassName:“手动”,
访问模式:[]v1.PersistentVolumeAccessMode{
“ReadWriteMany”,
},
容量:v1.ResourceList{
v1.ResourceName(v1.ResourceStorage):resource.MustParse(“2Gi”),
},
PersistentVolumeSource:v1.PersistentVolumeSource{
主机路径:&v1.HostPathVolumeSource{
路径:“/demo”,
},
},
},
}
_,e:=clientset.CoreV1().PersistentVolumes().Create(ctx,&vl,metav1.CreateOptions{})

我必须定义一个
PersistentVolumeSource
字段,在其初始化过程中,我通过了所需的主机路径配置

hostPath
卷不是真正持久的;如果一个pod在另一个节点上重新创建,或者一个节点被诸如cluster autoscaler之类的东西破坏,那么您将丢失(或者至少放错地方)内容。您真的需要手动创建PersistentVolume吗?我需要手动创建一个PersistentVolume。对于我在某个特定节点上的部署中的用例,请向您了解相关信息。我仍在学习,因此当集群中只有一个节点时,例如使用Minikube时,
hostPath
非常有用。或者使用在每个节点上使用相同路径的
DaemonSet
。@Jonas对于我的用例,我只使用一个节点
hostPath
卷不是真正持久的;如果一个pod在另一个节点上重新创建,或者一个节点被诸如cluster autoscaler之类的东西破坏,那么您将丢失(或者至少放错地方)内容。您真的需要手动创建PersistentVolume吗?我需要手动创建一个PersistentVolume。对于我在某个特定节点上的部署中的用例,请向您了解相关信息。我仍在学习,因此当集群中只有一个节点时,例如使用Minikube时,
hostPath
非常有用。或者使用在每个节点上使用相同路径的
守护程序集。@Jonas对于我的用例,我只使用一个节点