kubevirt

有个问题你看下是和你确认还是和产品确认下,比如要创建一个虚拟机(内存8G),但是在集群中所有node上内存都< 8G,kubevirt找不到合适的node 来部署这个虚拟机,那么虚拟机状态一直是Scheduling调度状态,
正常创建虚拟机的时候,会有一个等待虚拟机Scheduling,部署的时间,这个时间可能要根据硬件等来配置


-kubevirt遇到的问题(有可能不是问题,使用的方法不对)------------------------------------------
1.一个node从集群中下线了,删除这个集群上的虚拟机时,可以删除vms,但是vmis删除不掉,等这个node上线了(这个node已经),会自动删除掉
2. node已经关闭了,但是使用kubectl get pod -n kubevirt看到该node上的virt-handler还是running 状态的,导致还是会有虚拟机调度到该node
  
 
 
--------------------------------------------------------------------------

在其他的node上: yum -y install qemu-kvm libvirt virt-install bridge-utils


在master节点上
export KUBEVIRT_VERSION="v0.34.0"

kubectl create -f  https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml
kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml
kubectl -n kubevirt wait kv kubevirt --for condition=Available

#查看kubevirt是否都启动了,如果不是running状态,查看下日志,看是否防火墙拦截了端口
kubectl get pod -n kubevirt

curl -L -o virtctl \
https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/virtctl-${KUBEVIRT_VERSION}-linux-amd64
chmod +x virtctl 


这种方式只要pod重启,虚拟机中的数据就没有了(虚拟机重启数据还在)
 kubectl apply -f https://raw.githubusercontent.com/kubevirt/kubevirt.github.io/master/labs/manifests/vm.yaml
 
 
 kubectl get vms
 kubectl delete vms testvm
# 启动vm(vm启动之后,生成了vmis,如果用virtctl stop testvm,vmis就退出了,但是vms还在)
$ ./virtctl start testvm
#命令行模式进入刚刚创建的vm
$ ./virtctl console testvm

kubectl get vmis
查看vmis详情:  kubectl describe vmis testvmi-disk
-------------------------------

https://github.com/kubevirt/client-python
https://github.com/kubevirt/client-go

kubectl api-versions   https://www.cnblogs.com/dalianpai/p/12072844.html
kubectl  get namespace
kubectl get pod
kubectl describe pod xiaoyu-pod

kubectl apply -f my.yaml 
kubectl delete -f my.yaml 


标签-------------------------
kubectl get pod  --show-labels 
kubectl get node --show-labels 
kubectl get pods -L version   --show-labels 
添加pod   kubectl label pod frontend-g8c5f name=xiaoyu
修改已有的pod: kubectl label pod frontend-g8c5f tier=frontend1 --overwrite=true

---pod管理--------------------------------------
kubectl get pod --all-namespaces  
kubectl delete pod --all 删除默认空间下的pod
重启( AGE会从0开始计算) kubectl get pod PODNAME -n NAMESPACE -o yaml | kubectl replace --force -f -
进入pod中的docker     kubectl exec  test-pd -c test-container -it  /bin/bash

删除pod  kubectl delete rs --all
Back-off restarting failed container
command: [ "/bin/bash", "-ce", "tail -f /dev/null" ]
创建的docker name命名规则包含 pod名称_容器名称_ id


查看pod中docker日志  kubectl logs -f  xiaoyu-pod -c xiaoyu-rabbit

------------------------网络
https://www.cnblogs.com/saneri/p/13597732.html
1. 指定spec.hostNetwork: true, 可以直接通过宿主机的ip加服务端口访问(get pod -o wide显示的是node ip),如:
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  hostNetwork: true
  containers:
    - name: nginx
      image: nginx
   
 
缺点: pod漂移到其他node上之后,服务就失效了.
 
 
2. 
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
    - name: nginx
      image: nginx
      ports:
        - containerPort: 80     #pod容器指定的端口
          hostPort: 9090        #映射到node主机的端口

pod启动后如下,可以看到,pod的ip地址是内部网络ip,与宿主机node的ip不同;与hostNetwork一样,
nodeip + hostPort访问
性能不如hostNetwork,因为需要经过iptables的转发才能到达Pod
 
 
3. SVC NodePort 每个节点都打开一个端口
NodePort是一种service,其使用的是宿主机node上的端口号,从集群外以 任意node的ip + nodePort 来访问Pod的服务


存储------------------------------------------------- 
1. emptyDir 通一个pod中的docker容器之间能够共享,容器重启不会丢失,pod重启就没有了

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: k8s.gcr.io/test-webserver 
    name: test-container
    volumeMounts:
    - mountPath: /home/testempdir   #这个目录无需先创建,会自动生成, 还可以挂载到其他容器的其他路径 如/home/redis,对应的都是emptyDir
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}
    
    
2. hostPath
把宿主机上的目录,文件映射到pod上,pod上的docker都能共享,docker也能写该目录


3. 
动态PVC 要启用基于存储级别的动态存储配置,集群管理员需要启用 API server 上的 DefaultStorageClass  

apiVersion: v1
kind: PersistentVolume
metadata:
  name: kubevm1
spec:
  capacity:
    storage: 22Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
  nfs:
    path: /home/data/vmpool
    server: 192.168.91.137
    
    
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: kubepvc1
spec:
  storageClassName: nfs
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 23Gi


---ReplicaSet------------------------------------
kubectl apply  -f deployment.yaml
获取rs  kubectl get  rs
扩容  kubectl scale deployment my-nginx --replicas=4


apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google_samples/gb-frontend:v3
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 80
      
    
    


--Deployment------------------------------------------

            
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-nginx
  template:
    metadata:
      labels:
        app: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        
        
        
        
        
yum install -y nfs-common nfs-utils  rpcbind
mkdir /nfsdata
chmod 666 /nfsdata
chown nfsnobody /nfsdata
cat /etc/exports
    /nfsdata *(rw,no_root_squash,no_all_squash,sync)
systemctl start rpcbind
systemctl start nfs


cdi安装------------------------------------------------------------------------------------------------------
$ kubectl create -f https://github.com/kubevirt/containerized-data-importer/releases/download/v1.26.1/cdi-operator.yaml
$ kubectl create -f https://github.com/kubevirt/containerized-data-importer/releases/download/v1.26.1/cdi-cr.yaml


kubeadm join 192.168.91.128:6443 --token hji5n2.dbwgx6l83oyyqip6 --discovery-token-ca-cert-hash \sha256:73a8d44fd5d515b029ad298976941ccc4c58d070bf9e40133039d79273d7f45e --ignore-preflight-errors=all


#上传镜像
virtctl image-upload dv cirros-vm-disk --size=500Mi --image-path=/home/cirros-0.4.0-x86_64-disk.img --uploadproxy-url=https://10.10.226.58

 virtctl image-upload pvc mypvc --no-create --image-path=/home/win10.img --uploadproxy-url=https://10.10.226.58 \
  --insecure \
  --wait-secs=240
  
#上传ISO  
virtctl image-upload \
  --image-path='/home/win10.iso' \
  --pvc-name=iso-win10 \
  --pvc-size=6G \
  --uploadproxy-url=https://10.10.226.58 \
  --insecure \
  --wait-secs=240
  
-------------------------------------------------------

  
  
  


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值