k3s部署kubevirt-manager
2024-11-08
参考
- https://kubevirt.io/user-guide/
- https://kubevirt-manager.io/get_started.html
安装kubevirt
安装qemu_kvm,libvirt
自行安装
pass
安装kubectl
自行安装
pass
安装kind
自行安装
pass
设置默认文件
mkdir -p /root/.kube
cp /etc/rancher/k3s/k3s.yaml /root/.kube/config
kubectl get nodes
使用kubectl安装kubevirt operator
可以使用 KubeVirt Operator 安装 KubeVirt,该 Operator 管理所有 KubeVirt 核心组件的生命周期
export VERSION=$(curl -s https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
echo $VERSION
kubectl create -f "https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-operator.yaml"
使用 kubectl 部署 KubeVirt 自定义资源定义
kubectl create -f "https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-cr.yaml"
验证部署
kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath="{.status.phase}"
需要等上一会
kubectl get all -n kubevirt
等到状态为Deployed
即完成
默认情况下,KubeVirt 将部署 7 个 Pod、3 个服务、1 个 daemonset、3 个部署应用、3 个副本集
安装virt (optional)
kubectl krew install virt
安装kubevirt-manager
# 创建`storageclass.yaml`文件
#
# ```storageclass.yaml
# apiVersion: storage.k8s.io/v1
# kind: StorageClass
# metadata:
# name: local-path
# provisioner: rancher.io/local-path
# allowVolumeExpansion: true
# volumeBindingMode: WaitForFirstConsumer
使用默认配置
kubectl apply -f https://raw.githubusercontent.com/kubevirt-manager/kubevirt-manager/main/kubernetes/bundled.yaml
接下来,获取节点ip进行访问
kubectl get service kubevirt-manager -n kubevirt-manager
输出如下
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubevirt-manager NodePort your-cluster-ip <none> 8080/TCP 11m
or
git clone https://github.com/kubevirt-manager/kubevirt-manager.git
cd kubevirt-manager
kubectl apply -f kubernetes/ns.yaml
kubectl apply -f kubernetes/crd.yaml
kubectl apply -f kubernetes/rbac.yaml
kubectl apply -f kubernetes/pc.yaml
kubectl apply -f kubernetes/service.yaml
为了可以使用节点ip访问virt-manager
将原kubernetes/service.yaml
apiVersion: v1
kind: Service
metadata:
name: kubevirt-manager
namespace: kubevirt-manager
labels:
app: kubevirt-manager
kubevirt-manager.io/version: 1.4.1
spec:
type: ClusterIP
selector:
app: kubevirt-manager
ports:
- protocol: TCP
port: 8080
targetPort: 8080
中的 ClusterIP
修改为NodePort
,且可以添加映射出去的端口,修改后如下
apiVersion: v1
kind: Service
metadata:
name: kubevirt-manager
namespace: kubevirt-manager
labels:
app: kubevirt-manager
kubevirt-manager.io/version: 1.4.1
spec:
type: NodePort
selector:
app: kubevirt-manager
ports:
- protocol: TCP
port: 8080
targetPort: 8080
nodePort: 30080 # 如果使用 NodePort,可以指定端口号
再次应用kubernetes/service.yaml
kubectl apply -f kubernetes/service.yaml
接下来,获取节点ip进行访问
kubectl get service kubevirt-manager -n kubevirt-manager
输出如下
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubevirt-manager NodePort your-cluster-ip <none> 8080:30080/TCP 11m