自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kubernetns 容器與VM的編排與監(jiān)控實(shí)戰(zhàn)

開(kāi)發(fā) 前端
使用Kubernetes進(jìn)行容器編排的好處是眾所周知的。但是,如果您的業(yè)務(wù)不適合容器化,那又該怎么辦?也許您有一個(gè)基于第三方VM的應(yīng)用,該應(yīng)用不太容易也不太合適進(jìn)行容器化,又或者可能需要與Kubernetes平臺(tái)運(yùn)行不同的內(nèi)核或OS。

[[392730]]

使用Kubernetes進(jìn)行容器編排的好處是眾所周知的。但是,如果您的業(yè)務(wù)不適合容器化,那又該怎么辦?也許您有一個(gè)基于第三方VM的應(yīng)用,該應(yīng)用不太容易也不太合適進(jìn)行容器化,又或者可能需要與Kubernetes平臺(tái)運(yùn)行不同的內(nèi)核或OS。

您真正想要的是讓Kubernetes與基于標(biāo)準(zhǔn)容器一起編排VM的方式,就像普通Pod一樣。最近,有兩個(gè)比較好的項(xiàng)目旨在使您做到這一點(diǎn)。分別是是KubeVirt和OpenShift CNV。

在此博客中,我將逐步介紹KubeVirt,您可以按照自己的步驟,使用Calico網(wǎng)絡(luò)將KubeVirt添加到群集中,然后使用Calico網(wǎng)絡(luò)策略來(lái)保護(hù)VM。

開(kāi)始之前

我在開(kāi)發(fā)集群中使用Ubuntu 20.04和兩個(gè)裸機(jī)服務(wù)器。盡管我在“第1步”中對(duì)如何創(chuàng)建類似的開(kāi)發(fā)集群進(jìn)行了解釋,但是如果您已經(jīng)選擇了其他Kubernetes或OpenShift環(huán)境,則可以安全地跳過(guò)它。

要求:

至少一臺(tái)具有2個(gè)CPU,4GB Ram和20GB存儲(chǔ)空間的主機(jī)

kubectl命令行實(shí)用程序

SSH客戶端

KubeVirt安裝與管理

步驟1:建立集群

在開(kāi)始創(chuàng)建集群之前,讓我們對(duì)主機(jī)進(jìn)行初始化配置以適合Kubernetes。查看這個(gè)官方的教程(https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/)并準(zhǔn)備您的主機(jī)。

讓我們創(chuàng)建一個(gè)Kubernetes集群

  1. sudo kubeadm init --pod-network-cidr=192.168.0.0/16 

執(zhí)行以下命令來(lái)配置kubectl:

  1. mkdir -p $HOME/.kube 
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config 

移除master上的污點(diǎn),以便您可以在其上調(diào)度pod。

  1. kubectl taint nodes --all node-role.kubernetes.io/master- 

它應(yīng)該返回以下內(nèi)容:

  1. node/<your-hostname> untainted 

步驟2:安裝Calico

使用清單安裝Calico

  1. kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 

步驟3:安裝KubeVirt

使用namespace,我們可以將資源隔離到邏輯模塊中,并且可以更輕松地管理它們。

  1. kubectl create namespace kubevirt 

建議使用支持硬件虛擬化的主機(jī),以確保您的主機(jī)能夠使用virt-host-validate二進(jìn)制文件。

  1. virt-host-validate qemu 
  2. QEMU: Checking for hardware virtualization               :PASS 

如果主機(jī)缺少此命令,則可以使用發(fā)行版軟件包管理器進(jìn)行安裝,也可以使用來(lái)檢查kvm文件夾是否可用 ls /dev/kvm。

默認(rèn)情況下,KubeVirt嘗試?yán)糜布抡妗5?,此功能并非在所有環(huán)境中都可用,在這種情況下,您可以使用以下方式啟用軟件仿真:

  1. kubectl create configmap -n kubevirt kubevirt-config \ 
  2. --from-literal debug.useEmulation=true 

應(yīng)用這些清單并運(yùn)行KubeVirt operator以自動(dòng)安裝所有必需的資源。

  1. kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/v0.38.1/kubevirt-operator.yaml 
  2. kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/v0.38.1/kubevirt-cr.yaml 

啟用遷移功能。(該功能依賴于存儲(chǔ))

  1. kubectl create configmap -n kubevirt kubevirt-config --from-literal feature-gates="LiveMigration" 

啟用VNC代理功能組件。

  1. kubectl apply -f kubevirt/vnc.yaml 

您可以使用此命令檢查KubeVirt的安裝進(jìn)度。

  1. kubectl -n kubevirt wait kv kubevirt --for condition=Available 

步驟4:創(chuàng)建一個(gè)簡(jiǎn)單的VM

首先,我們創(chuàng)建一個(gè)namespace來(lái)隔離此演示的資源。

  1. kubectl create namespace kv-policy-demo 

現(xiàn)在,使用虛擬機(jī)實(shí)例(VMI)定制資源,我們可以創(chuàng)建與Kubernetes完全集成的VM。

  1. kubectl create -f - <<EOF 
  2. apiVersion: kubevirt.io/v1alpha3 
  3. kind: VirtualMachineInstance 
  4. metadata: 
  5.   name: vmi-cirros 
  6.   namespace: kv-policy-demo 
  7.   labels: 
  8.     special: l-vmi-cirros 
  9. spec: 
  10.   domain: 
  11.     devices: 
  12.       disks: 
  13.       - disk: 
  14.           bus: virtio 
  15.         name: containerdisk 
  16.     resources: 
  17.       requests: 
  18.         memory: 64M 
  19.   volumes: 
  20.   - name: containerdisk 
  21.     containerDisk: 
  22.       image: kubevirt/cirros-registry-disk-demo:latest 
  23. EOF 

請(qǐng)注意,如果您使用的是軟件仿真,則啟動(dòng)虛擬機(jī)可能會(huì)非常慢,并且完成IP地址分配可能需要5到6分鐘的時(shí)間。

  1. kubectl create -f - <<EOF 
  2. apiVersion: v1 
  3. kind: Service 
  4. metadata: 
  5.   name: vmi-cirros-ssh-svc 
  6.   namespace: kv-policy-demo 
  7. spec: 
  8.   ports: 
  9.   - name: crrios-ssh-svc 
  10.     nodePort: 30000 
  11.     port: 27017 
  12.     protocol: TCP 
  13.     targetPort: 22 
  14.   selector: 
  15.     special: l-vmi-cirros 
  16.   type: NodePort 
  17. EOF 

通過(guò)使用您節(jié)點(diǎn)的IP地址通過(guò)服務(wù)節(jié)點(diǎn)端口進(jìn)行訪問(wèn),確認(rèn)我們可以使用SSH訪問(wèn)VM 。默認(rèn)密碼是gocubsgo。

  1. ssh cirros@10.1.2.3 -p 30000 

通過(guò)從新的虛擬機(jī)ping google來(lái)確認(rèn)虛擬機(jī)可以訪問(wèn)外界。

  1. ping www.google.com -c 5 

步驟5:添加網(wǎng)絡(luò)安全性

應(yīng)用以下策略在其namespace中隔離VM。這將僅將允許入向?yàn)镾SH的協(xié)議,并且阻止所有出現(xiàn)的流量VM。(取決于您的VM,您將需要其他策略,但是此簡(jiǎn)單策略對(duì)本教程很有用。)

  1. kubectl create -f - <<EOF 
  2. apiVersion: networking.k8s.io/v1 
  3. kind: NetworkPolicy 
  4. metadata: 
  5.  nameonly-allow-ingress-ssh-to-vm 
  6.  namespace: kv-policy-demo 
  7. spec: 
  8.  podSelector: 
  9.    matchLabels:  
  10.     special: l-vmi-cirros 
  11.  policyTypes: 
  12.  - Ingress 
  13.  - Egress 
  14.  ingress: 
  15.  - from
  16.    ports: 
  17.    - port: 22 
  18. EOF 

SSH進(jìn)入虛擬機(jī),然后嘗試再次ping google。

您將無(wú)法執(zhí)行此操作,因?yàn)樵摬呗詫⒆柚顾袕腜od發(fā)起的與外界的通信。這非常強(qiáng)大–您可以使用與保護(hù)Pod相同的范例來(lái)保護(hù)VM!

步驟6:訪問(wèn)虛擬機(jī)

現(xiàn)在我們已經(jīng)為基于Kubernetes的VM管理設(shè)置了Kubevirt,現(xiàn)在讓我們?cè)L問(wèn)我們的VM。

  • 使用NodePort服務(wù)和弱密碼在外部公開(kāi)VM時(shí)要小心
  • 串行控制臺(tái)僅可通過(guò)kubectl virt插件使用
  • SSH以root用戶身份登錄

通過(guò)virt:

  • SSH訪問(wèn):
  1. kubectl virt expose vmi test-vm --port=22 --name=test-vm-ssh --type=NodePort 
  • 串行控制臺(tái):
  1. virtctl console test-vm 

不通過(guò)virt:

  1. apiVersion: v1 
  2. kind: Service 
  3. metadata: 
  4.   name: test-vm-ssh 
  5.   namespace: default 
  6. spec: 
  7.   ports: 
  8.   - name: test-vm-ssh 
  9.     protocol: TCP 
  10.     port: 22 
  11.     targetPort: 22 
  12.   selector: 
  13.     kubevirt.io/name: test-vm 
  14.   type: NodePort 

使用VNC:

  • 如果尚未啟用VNC
  1. kubectl apply -f kubevirt/vnc/vnc.yaml 
  • 查找VNC服務(wù)節(jié)點(diǎn)端口
  • 在以下位置訪問(wèn)VM

http://NODE_IP:NODEPORT/?namespace=VM_NAMESPACE

  • 僅顯示namespace VM_NAMESPACE下的VM。選擇所需虛擬機(jī)所在的namespace。

步驟7:測(cè)試CDI

  • 在應(yīng)用之前,請(qǐng)確保填寫(xiě)DataVolume/VM清單中的所有變量以適合您的環(huán)境
  • 嘗試創(chuàng)建一個(gè)DataVolume
  1. kubectl apply -f datavolume/datavolume-cirros.yaml 
  2. kubectl apply -f datavolume/datavolume-ubuntu.yaml 
  3. kubectl get datavolumes 
  • 在VM清單中即時(shí)使用DataVolume
  1. kubectl apply -f vm/CDI-PVC.yaml 

步驟8:清理

要清除本指南中使用的namespace和VM,可以運(yùn)行以下命令

  1. kubectl delete namespace kv-policy-demo 

其他:故障排除

  • 確保Kubernetes有足夠的備用CPU/RAM來(lái)部署您請(qǐng)求的VM
  • 確保硬件虛擬化受支持并且可用,或者ConfigMap中存在軟件虛擬化標(biāo)志
  • 更改標(biāo)志需要重新啟動(dòng)部署
  • 確保服務(wù)選擇器正確定位到VM Pod
  • 檢查Docker MTU和CNI插件MTU是否適合您的網(wǎng)絡(luò)
  • 使用kubectl virt console $VM_NAME_HERE以確保虛擬機(jī)已啟動(dòng)

從內(nèi)部監(jiān)控KubeVirt VM

部署Prometheus Operator

一旦準(zhǔn)備好了k8s集群,就是部署Prometheus Operator。原因是KubeVirt CR安裝在群集上時(shí)將檢測(cè)ServiceMonitor CR是否已存在。如果是這樣,那么它將創(chuàng)建ServiceMonitors,這些ServiceMonitors被配置為可立即監(jiān)控所有KubeVirt組件(virt-controller,virt-api和virt-handler)。

盡管本文中沒(méi)有介紹監(jiān)控KubeVirt本身,但是還是在部署KubeVirt之前先部署Prometheus Operator。

要部署Prometheus Operator,您需要首先創(chuàng)建其namespace,例如monitoring:

  1. kubectl create ns monitoring 

然后在新的namespace中部署operator:

  1. helm fetch stable/prometheus-operator 
  2. tar xzf prometheus-operator*.tgz 
  3. cd prometheus-operator/ && helm install -n monitoring -f values.yaml kubevirt-prometheus stable/prometheus-operator 

部署完所有內(nèi)容后,您可以刪除helm下載的所有內(nèi)容:

  1. cd .. 
  2. rm -rf prometheus-operator* 

要記住的一件事是我們?cè)诖颂幪砑拥陌姹久Q:kubevirt-prometheus。ServiceMonitor稍后聲明我們時(shí)將使用版本名稱。

部署具有持久性存儲(chǔ)的VirtualMachine

現(xiàn)在,我們已經(jīng)準(zhǔn)備好所需要的一切。下面讓我們配置虛擬機(jī)。

我們將從CDI的DataVolume(https://github.com/kubevirt/containerized-data-importer/blob/master/doc/datavolumes.md)資源PersistenVolume開(kāi)始。由于我沒(méi)有動(dòng)態(tài)存儲(chǔ)提供程序,因此我將創(chuàng)建2個(gè)PV,引用將聲明它們的PVC。注意每個(gè)PV的claimRef。

  1. apiVersion: v1 
  2. kind: PersistentVolume 
  3. metadata: 
  4.   name: example-volume 
  5. spec: 
  6.   storageClassName: "" 
  7.   claimRef: 
  8.     namespace: default 
  9.     name: cirros-dv 
  10.   accessModes: 
  11.     - ReadWriteOnce 
  12.   capacity: 
  13.     storage: 2Gi 
  14.   hostPath: 
  15.     path: /data/example-volume/ 
  16. --- 
  17. apiVersion: v1 
  18. kind: PersistentVolume 
  19. metadata: 
  20.   name: example-volume-scratch 
  21. spec: 
  22.   storageClassName: "" 
  23.   claimRef: 
  24.     namespace: default 
  25.     name: cirros-dv-scratch 
  26.   accessModes: 
  27.     - ReadWriteOnce 
  28.   capacity: 
  29.     storage: 2Gi 
  30.   hostPath: 
  31.     path: /data/example-volume-scratch/ 

有了永久性存儲(chǔ)后,我們可以使用以下清單創(chuàng)建虛擬機(jī):

  1. apiVersion: kubevirt.io/v1alpha3 
  2. kind: VirtualMachine 
  3. metadata: 
  4.   name: monitorable-vm 
  5. spec: 
  6.   running: true 
  7.   template: 
  8.     metadata: 
  9.       name: monitorable-vm 
  10.       labels: 
  11.         prometheus.kubevirt.io: "node-exporter" 
  12.     spec: 
  13.       domain: 
  14.         resources: 
  15.           requests: 
  16.             memory: 1024Mi 
  17.         devices: 
  18.           disks: 
  19.           - disk: 
  20.               bus: virtio 
  21.             name: my-data-volume 
  22.       volumes: 
  23.       - dataVolume: 
  24.           name: cirros-dv 
  25.         name: my-data-volume 
  26.   dataVolumeTemplates: 
  27.   - metadata: 
  28.       name"cirros-dv" 
  29.     spec: 
  30.       source: 
  31.           http: 
  32.              url: "https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img" 
  33.       pvc: 
  34.         storageClassName: "" 
  35.         accessModes: 
  36.           - ReadWriteOnce 
  37.         resources: 
  38.           requests: 
  39.             storage: "2Gi" 

注意,KubeVirt的VirtualMachine資源有一個(gè)VirtualMachine模板和一個(gè)dataVolumeTemplate。在VirtualMachine模板上,重要的是要注意我們已將VM命名為VM monitorable-vm,以后將使用該名稱連接到其控制臺(tái)virtctl。我們添加的標(biāo)簽prometheus.kubevirt.io: "node-exporter"也很重要,因?yàn)樵赩M內(nèi)部安裝與配置node-exporter時(shí)將會(huì)使用到它。

在dataVolumeTemplate上,需要注意的是,我們將PVC命名為cirros-dv,DataVolume資源將用它創(chuàng)建2個(gè)PVC,cirros-dv和cirros-dv-scratch。注意,cirros-dv和cirros-dv-scratch是PersistentVolume清單上引用的名稱。名稱必須匹配才能工作。

在VM內(nèi)安裝node-exporter

一旦VirtualMachineInstance運(yùn)行,我們就可以使用virtctl console monitorable vm連接到它的控制臺(tái)。如果需要用戶和密碼,請(qǐng)?zhí)峁┫鄳?yīng)的憑據(jù)。如果您使用的是本指南中的同一磁盤(pán)映像,則用戶和密碼分別為cirros和gocubsgo

以下腳本將安裝node-exporter并將虛擬機(jī)配置為在啟動(dòng)時(shí)候自啟:

  1. curl -LO -k https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz 
  2. gunzip -c node_exporter-1.0.1.linux-amd64.tar.gz | tar xopf - 
  3. ./node_exporter-1.0.1.linux-amd64/node_exporter & 
  4.  
  5. sudo /bin/sh -c 'cat > /etc/rc.local <<EOF 
  6. #!/bin/sh 
  7. echo "Starting up node_exporter at :9100!" 
  8.  
  9. /home/cirros/node_exporter-1.0.1.linux-amd64/node_exporter 2>&1 > /dev/null & 
  10. EOF' 
  11. sudo chmod +x /etc/rc.local 

PS:如果您使用其他基礎(chǔ)映像,請(qǐng)配置node-exporter以在啟動(dòng)時(shí)相應(yīng)地啟動(dòng)

配置Prometheus抓取VM的node-exporter

配置Prometheus來(lái)抓取node-exporter非常簡(jiǎn)單。我們需要做的就是創(chuàng)建一個(gè)新的Service和一個(gè)ServiceMonitor:

  1. apiVersion: v1 
  2. kind: Service 
  3. metadata: 
  4.   name: monitorable-vm-node-exporter 
  5.   labels: 
  6.     prometheus.kubevirt.io: "node-exporter" 
  7. spec: 
  8.   ports: 
  9.   - name: metrics 
  10.     port: 9100 
  11.     targetPort: 9100 
  12.     protocol: TCP 
  13.   selector: 
  14.     prometheus.kubevirt.io: "node-exporter" 
  15. --- 
  16. apiVersion: monitoring.coreos.com/v1 
  17. kind: ServiceMonitor 
  18. metadata: 
  19.   name: kubevirt-node-exporters-servicemonitor 
  20.   namespace: monitoring 
  21.   labels: 
  22.     prometheus.kubevirt.io: "node-exporter" 
  23.     release: monitoring 
  24. spec: 
  25.   namespaceSelector: 
  26.     anytrue 
  27.   selector: 
  28.     matchLabels: 
  29.       prometheus.kubevirt.io: "node-exporter" 
  30.   endpoints: 
  31.   - port: metrics 
  32.     interval: 15s 

讓我們分解一下,以確保我們正確設(shè)置了所有內(nèi)容。從Service開(kāi)始:

  1. spec: 
  2.   ports: 
  3.   - name: metrics 
  4.     port: 9100 
  5.     targetPort: 9100 
  6.     protocol: TCP 
  7.   selector: 
  8.     prometheus.kubevirt.io: "node-exporter" 

在規(guī)范中,我們正在創(chuàng)建一個(gè)名為metrics的新端口,該端口將重定向到每個(gè)標(biāo)記為prometheus.kubevirt.io: "node-exporter",此處為端口9100,這是node_exporter的默認(rèn)端口號(hào)。

  1. apiVersion: v1 
  2. kind: Service 
  3. metadata: 
  4.   name: monitorable-vm-node-exporter 
  5.   labels: 
  6.     prometheus.kubevirt.io: "node-exporter" 

我們還在為服務(wù)本身貼上標(biāo)簽prometheus.kubevirt.io: "node-exporter",將由ServiceMonitor對(duì)象使用?,F(xiàn)在讓我們看看我們的ServiceMonitor規(guī)范:

  1. spec: 
  2.   namespaceSelector: 
  3.     anytrue 
  4.   selector: 
  5.     matchLabels: 
  6.       prometheus.kubevirt.io: "node-exporter" 
  7.   endpoints: 
  8.   - port: metrics 
  9.     interval: 15s 

由于我們的ServiceMonitor將部署在monitoring namespace中,而我們的服務(wù)則在default namespace中,因此我們需要設(shè)置namespaceSelector.any=true。

我們還告訴ServiceMonitor,Prometheus需要從標(biāo)記為prometheus.kubevirt.io: "node-exporter"以及哪些端口被命名為metrics。幸運(yùn)的是,我們的service就是這么做的!

最后一件要注意的事。Prometheus配置可以設(shè)置為監(jiān)視多個(gè)ServiceMonitors。我們可以通過(guò)以下命令查看prometheus正在監(jiān)視的服務(wù):

  1. # Look for Service Monitor Selector 
  2. kubectl describe -n monitoring prometheuses.monitoring.coreos.com monitoring-prometheus-oper-prometheus 

確保我們的ServiceMonitor具有Prometheus的Service Monitor Selector的所有標(biāo)簽。一個(gè)常見(jiàn)的選擇器是我們?cè)诓渴餳elm的prometheus時(shí)設(shè)置的版本名稱!

測(cè)試

您可以通過(guò)端口轉(zhuǎn)發(fā)Prometheus Web UI并執(zhí)行一些PromQL來(lái)進(jìn)行快速測(cè)試:

  1. kubectl port-forward -n monitoring prometheus-monitoring-prometheus-oper-prometheus-0 9090:9090 

為確保一切正常,請(qǐng)?jiān)L問(wèn)localhost:9090/graph并執(zhí)行PromQL up{pod=~"virt-launcher.*"}。Prometheus應(yīng)該返回從monitorable-vm的node-exporter收集的數(shù)據(jù)。

您可以試用virtctl,停止和啟動(dòng)VM,以查看指標(biāo)的行為。您會(huì)注意到,使用停止VM時(shí)virtctl stop monitorable-vm,VirtualMachineInstance被殺死,因此它也是Pod。這將導(dǎo)致我們的服務(wù)無(wú)法找到pod的端點(diǎn),然后將其從Prometheus的目標(biāo)中刪除。

由于這種行為,下面的告警規(guī)則將無(wú)法正常工作,因?yàn)槲覀兊哪繕?biāo)實(shí)際上已經(jīng)消失了,而不是降級(jí)了。

  1. - alert: KubeVirtVMDown 
  2.     expr: up{pod=~"virt-launcher.*"} == 0 
  3.     for: 1m 
  4.     labels: 
  5.       severity: warning 
  6.     annotations: 
  7.       summary: KubeVirt VM {{ $labels.pod }} is down. 

但是,如果VM在不停止的情況下連續(xù)崩潰,則pod不會(huì)被殺死,并且仍將監(jiān)視目標(biāo)。node-exporter永遠(yuǎn)不會(huì)啟動(dòng)或?qū)⑴cVM一起不斷關(guān)閉,因此這樣的警報(bào)可能會(huì)起作用:

  1. - alert: KubeVirtVMCrashing 
  2.     expr: up{pod=~"virt-launcher.*"} == 0 
  3.     for: 5m 
  4.     labels: 
  5.       severity: critical 
  6.     annotations: 
  7.       summary: KubeVirt VM {{ $labels.pod }} is constantly crashing before node-exporter starts at boot. 

結(jié)論:

在此博客文章中,首先,我們簡(jiǎn)單介紹以及快速安裝體驗(yàn)了kubevirt, 然后我們使用node-exporter從KubeVirt VM中公開(kāi)了監(jiān)控指標(biāo)。我們還配置了Prometheus Operator來(lái)收集這些指標(biāo)。本文也是將Kubernetes監(jiān)控實(shí)踐與KubeVirt VM運(yùn)行的應(yīng)用程序結(jié)合使用。

 

責(zé)任編輯:武曉燕 來(lái)源: 新鈦云服
相關(guān)推薦

2023-06-03 00:04:10

容器虛擬機(jī)VM

2020-05-26 14:56:58

VM容器無(wú)服務(wù)器

2024-02-23 14:57:40

2022-06-16 13:21:10

vivo容器集群云原生

2021-07-28 11:49:33

資源編排

2021-07-30 15:01:41

架構(gòu)設(shè)計(jì)并發(fā)模型設(shè)計(jì)工作流設(shè)計(jì)

2022-11-06 21:31:11

云原生Sentinel集群模式

2023-03-01 07:42:12

HBase編排部署數(shù)據(jù)

2017-06-13 16:03:35

混合云容器編排引擎

2017-10-10 08:30:21

Kubernetes容器編排

2012-10-29 10:14:07

APPHadoopSplunk

2020-03-30 21:40:35

容器編排工具

2023-12-14 15:51:15

2012-05-03 11:30:04

ApacheCXFJava

2023-08-21 15:28:36

云原生Kubernetes

2019-10-16 11:09:41

微型VM容器

2010-08-02 09:25:59

甲骨文戴爾惠普

2016-01-21 09:37:19

OpenStack容器編排引擎Docker

2024-01-02 08:00:00

云計(jì)算容器Docker

2021-12-25 23:25:04

LinuxDocker容器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)