国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源

這篇具有很好參考價值的文章主要介紹了【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源

Kompose 是什么?它是個轉(zhuǎn)換工具,可將 compose(即 Docker Compose)所組裝的所有內(nèi)容 轉(zhuǎn)換成容器編排器(Kubernetes 或 OpenShift)可識別的形式。


一、 Kompose

其實有很多種方式安裝 Kompose。這里只講解如何從最新的 GitHub 發(fā)布頁面下載二進制文件。

# Linux
curl -L https://github.com/kubernetes/kompose/releases/download/v1.26.0/kompose-linux-amd64 -o kompose

# macOS
curl -L https://github.com/kubernetes/kompose/releases/download/v1.26.0/kompose-darwin-amd64 -o kompose

# Windows
curl -L https://github.com/kubernetes/kompose/releases/download/v1.26.0/kompose-windows-amd64.exe -o kompose.exe

chmod +x kompose
sudo mv ./kompose /usr/local/bin/kompose`在這里插入代碼片`

1.1、Kompose 的使用

首先需要把 Docker Compose 帶到 Kubernetes。 只需要一個現(xiàn)有的 docker-compose.yml 文件。

  1. 進入 docker-compose.yml 文件所在的目錄。如果沒有,你可以使用下面這個進行測試文件。
version: "2"

services:

  redis-master:
    image: k8s.gcr.io/redis:e2e
    ports:
      - "6379"

  redis-slave:
    image: gcr.io/google_samples/gb-redisslave:v3
    ports:
      - "6379"
    environment:
      - GET_HOSTS_FROM=dns

  frontend:
    image: gcr.io/google-samples/gb-frontend:v4
    ports:
      - "80:80"
    environment:
      - GET_HOSTS_FROM=dns
    labels:
      kompose.service.type: LoadBalancer
  1. 要將 docker-compose.yml 轉(zhuǎn)換為 kubectl 可用的文件,還需要運行 kompose convert 命令進行轉(zhuǎn)換,然后運行 kubectl apply -f <output file> 進行創(chuàng)建。
$ kompose convert  

運行結(jié)果類似如下:

【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源

接著運行命令:

$ kubectl apply -f frontend-service.yaml,redis-master-service.yaml,redis-slave-service.yaml,frontend-deployment.yaml,redis-master-deployment.yaml,redis-slave-deployment.yaml

運行結(jié)果如下:

【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源

現(xiàn)在我們部署的應(yīng)用就在Kubernetes 中運行起來了。

  1. 訪問應(yīng)用

如果在開發(fā)過程中使用了 minikube,需要執(zhí)行下列命令:

$ minikube service frontend

如果沒有使用的話,我們就需要查當(dāng)前服務(wù)使用的IP,執(zhí)行下面命令:

$ kubectl describe svc frontend

Name:                   frontend
Namespace:              default
Labels:                 service=frontend
Selector:               service=frontend
Type:                   LoadBalancer
IP:                     10.0.0.183
LoadBalancer Ingress:   192.0.2.89
Port:                   80      80/TCP
NodePort:               80      31144/TCP
Endpoints:              172.17.0.4:80
Session Affinity:       None
No events.

如果使用的是云提供商,你的 IP 將在 LoadBalancer Ingress 字段給出。

$ curl http://192.0.2.89

二、kompose convert 實戰(zhàn)

Kompose 支持兩種驅(qū)動:OpenShift 和 Kubernetes。 你可以通過全局選項 --provider 選擇驅(qū)動。如果沒有指定, 會將 Kubernetes 作為默認驅(qū)動。

2.1、Kubernetes kompose convert實戰(zhàn)

執(zhí)行如下命令,實現(xiàn) docker-compose 轉(zhuǎn)換

$ kompose --file docker-voting.yml convert
WARN Unsupported key networks - ignoring
WARN Unsupported key build - ignoring
INFO Kubernetes file "worker-svc.yaml" created
INFO Kubernetes file "db-svc.yaml" created
INFO Kubernetes file "redis-svc.yaml" created
INFO Kubernetes file "result-svc.yaml" created
INFO Kubernetes file "vote-svc.yaml" created
INFO Kubernetes file "redis-deployment.yaml" created
INFO Kubernetes file "result-deployment.yaml" created
INFO Kubernetes file "vote-deployment.yaml" created
INFO Kubernetes file "worker-deployment.yaml" created
INFO Kubernetes file "db-deployment.yaml" created

查看轉(zhuǎn)換之后的文件:

$ ls

轉(zhuǎn)換結(jié)果:

db-deployment.yaml  docker-compose.yml         docker-gitlab.yml  redis-deployment.yaml  result-deployment.yaml  vote-deployment.yaml  worker-deployment.yaml
db-svc.yaml         docker-voting.yml          redis-svc.yaml     result-svc.yaml        vote-svc.yaml           worker-svc.yaml

當(dāng)然,你也可以同時提供多個 docker-compose 文件進行轉(zhuǎn)換:

$ kompose -f docker-compose.yml -f docker-guestbook.yml convert
INFO Kubernetes file "frontend-service.yaml" created         
INFO Kubernetes file "mlbparks-service.yaml" created         
INFO Kubernetes file "mongodb-service.yaml" created          
INFO Kubernetes file "redis-master-service.yaml" created     
INFO Kubernetes file "redis-slave-service.yaml" created      
INFO Kubernetes file "frontend-deployment.yaml" created      
INFO Kubernetes file "mlbparks-deployment.yaml" created      
INFO Kubernetes file "mongodb-deployment.yaml" created       
INFO Kubernetes file "mongodb-claim0-persistentvolumeclaim.yaml" created
INFO Kubernetes file "redis-master-deployment.yaml" created  
INFO Kubernetes file "redis-slave-deployment.yaml" created  

查看轉(zhuǎn)換之后的文件:

$ ls

轉(zhuǎn)換結(jié)果:

mlbparks-deployment.yaml  mongodb-service.yaml                       redis-slave-service.jsonmlbparks-service.yaml  
frontend-deployment.yaml  mongodb-claim0-persistentvolumeclaim.yaml  redis-master-service.yaml
frontend-service.yaml     mongodb-deployment.yaml                    redis-slave-deployment.yaml
redis-master-deployment.yaml

當(dāng)提供多個 docker-compose 文件時,配置將會合并。任何通用的配置都將被后續(xù)文件覆蓋。

2.2、OpenShift kompose convert 實戰(zhàn)

方式千千萬,唯有命令最簡單:

$ kompose --provider openshift --file docker-voting.yml convert
WARN [worker] Service cannot be created because of missing port.
INFO OpenShift file "vote-service.yaml" created             
INFO OpenShift file "db-service.yaml" created               
INFO OpenShift file "redis-service.yaml" created            
INFO OpenShift file "result-service.yaml" created           
INFO OpenShift file "vote-deploymentconfig.yaml" created    
INFO OpenShift file "vote-imagestream.yaml" created         
INFO OpenShift file "worker-deploymentconfig.yaml" created  
INFO OpenShift file "worker-imagestream.yaml" created       
INFO OpenShift file "db-deploymentconfig.yaml" created      
INFO OpenShift file "db-imagestream.yaml" created           
INFO OpenShift file "redis-deploymentconfig.yaml" created   
INFO OpenShift file "redis-imagestream.yaml" created        
INFO OpenShift file "result-deploymentconfig.yaml" created  
INFO OpenShift file "result-imagestream.yaml" created  

kompose 還支持為服務(wù)中的構(gòu)建指令創(chuàng)建 buildconfig。 默認情況下,它使用當(dāng)前 git 分支的 remote 倉庫作為源倉庫,使用當(dāng)前分支作為構(gòu)建的源分支。 你可以分別使用 --build-repo 和 --build-branch 選項指定不同的源倉庫和分支。

$ kompose --provider openshift --file buildconfig/docker-compose.yml convert

WARN [foo] Service cannot be created because of missing port.
INFO OpenShift Buildconfig using git@github.com:rtnpro/kompose.git::master as source.
INFO OpenShift file "foo-deploymentconfig.yaml" created     
INFO OpenShift file "foo-imagestream.yaml" created          
INFO OpenShift file "foo-buildconfig.yaml" created

三、其他轉(zhuǎn)換方式

默認的 kompose 轉(zhuǎn)換會生成 yaml 格式的 Kubernetes Deployment 和 Service 對象。 也可以選擇通過 -j 參數(shù)生成 json 格式的對象。 也可以替換生成 Replication Controllers 對象、 Daemon Sets 或 Helm charts。

$ kompose convert -j

【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源

*-deployment.json 文件中包含 Deployment 對象。

$ kompose convert --replication-controller

【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源

*-replicationcontroller.yaml 文件包含 Replication Controller 對象。 如果你想指定副本數(shù)(默認為 1),可以使用 --replicas 參數(shù): kompose convert --replication-controller --replicas 3

$ kompose convert --daemon-set

【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源

*-daemonset.yaml 文件包含 DaemonSet 對象。

如果你想生成 Helm 可用的 Chart, 只需簡單的執(zhí)行下面的命令:

$ kompose convert -c

【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源

$ tree docker-compose/
docker-compose
├── Chart.yaml
├── README.md
└── templates
    ├── redis-deployment.yaml
    ├── redis-svc.yaml
    ├── web-deployment.yaml
    └── web-svc.yaml

這個 Chart 結(jié)構(gòu)旨在為構(gòu)建 Helm Chart 提供框架。

四、標(biāo)簽

kompose 支持 docker-compose.yml 文件中用于 Kompose 的標(biāo)簽,以便 在轉(zhuǎn)換時明確定義 Service 的行為。

  • kompose.service.type 定義要創(chuàng)建的 Service 類型。
version: "2"
services:
  nginx:
    image: nginx
    dockerfile: foobar
    build: ./foobar
    cap_add:
      - ALL
    container_name: foobar
    labels:
      kompose.service.type: nodeport
  • kompose.service.expose 定義是否允許從集群外部訪問 Service。 如果該值被設(shè)置為 “true”,提供程序?qū)⒆詣釉O(shè)置端點, 對于任何其他值,該值將被設(shè)置為主機名。 如果在 Service 中定義了多個端口,則選擇第一個端口作為公開端口。
    • 如果使用 Kubernetes 驅(qū)動,會有一個 Ingress 資源被創(chuàng)建,并且假定 已經(jīng)配置了相應(yīng)的 Ingress 控制器。
    • 如果使用 OpenShift 驅(qū)動,則會有一個 route 被創(chuàng)建。
version: "2"
services:
  web:
    image: tuna/docker-counter23
    ports:
     - "5000:5000"
    links:
     - redis
    labels:
      kompose.service.expose: "counter.example.com"
  redis:
    image: redis:3.0
    ports:
     - "6379"

當(dāng)前支持的選項有:

kompose.service.type nodeport / clusterip / loadbalancer
kompose.service.expose true / hostname

提示kompose.service.type 標(biāo)簽應(yīng)該只用 ports 來定義,否則 kompose 會失敗。

總結(jié)

如果 Docker Compose 文件中的服務(wù)名包含 _(例如 web_service), 那么將會被替換為 -,服務(wù)也相應(yīng)的會重命名(例如 web-service)。 Kompose 這樣做的原因是 “Kubernetes” 不允許對象名稱中包含 _。

本篇文章,主要講解了 Kompose,以及 Kompose convert 的兩種使用方式,文中還穿插了一些其他的轉(zhuǎn)換方式,干貨還是比較多的。文章來源地址http://www.zghlxwxcb.cn/news/detail-410806.html

到了這里,關(guān)于【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉(zhuǎn)換成 Kubernetes 資源的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【云原生 | Kubernetes 系列】K8s 實戰(zhàn) Kubernetes 對象管理之指令式命令管理和配置文件命令式管理

    【云原生 | Kubernetes 系列】K8s 實戰(zhàn) Kubernetes 對象管理之指令式命令管理和配置文件命令式管理

    kubectl 工具能夠支持三種對象管理方式: 聲明式對象配置 指令式命令 指令式對象配置 前面我使用了兩篇文章講解了 使用配置文件對 Kubernetes 對象進行聲明式管理 的相關(guān)知識點,本篇文章我將帶領(lǐng)大家一起學(xué)習(xí)剩下的兩個Kubernetes 對象管理的指令式命令管理和配置文件命令式

    2023年04月15日
    瀏覽(89)
  • 【云原生 | Kubernetes 系列】K8s 實戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù) II 將pod數(shù)據(jù)傳遞給容器

    【云原生 | Kubernetes 系列】K8s 實戰(zhàn) 如何給應(yīng)用注入數(shù)據(jù) II 將pod數(shù)據(jù)傳遞給容器

    在上一篇文章中,我們學(xué)習(xí)了針對容器設(shè)置啟動時要執(zhí)行的命令和參數(shù)、定義相互依賴的環(huán)境變量、為容器設(shè)置環(huán)境變量,三種設(shè)置方式,本篇文章,我們將繼續(xù)學(xué)習(xí)數(shù)據(jù)的傳遞。 有兩種方式可以將 Pod 和 Container 字段傳遞給運行中的容器: 環(huán)境變量 卷文件 這兩種呈現(xiàn) Pod

    2024年01月25日
    瀏覽(526)
  • 云原生系列之docker的容器管理實戰(zhàn)

    之前我們已經(jīng)探討過了docker的鏡像,看了下時間,距離上次介紹容器的鏡像已經(jīng)過去兩個月了, 如果你已經(jīng)忘記了,可以直奔專欄:容器管理 從今天開始,我們要探討docker 的容器了,docker的容器都是從鏡像開始創(chuàng)建的,涉及到的操作有: 創(chuàng)建容器,停止容器,進入容器,刪

    2024年02月10日
    瀏覽(20)
  • 云原生系列之管理docker容器中的數(shù)據(jù)管理實戰(zhàn)

    在生產(chǎn)環(huán)境中使用docker,一方面需要對數(shù)據(jù)進行保存或者在多個容器之間進行數(shù)據(jù)共享; 另一方面在docker的容器被刪除之后,并不會保留容器的狀態(tài)信息。 想要實現(xiàn)docker容器的信息持久化,就涉及到docker的數(shù)據(jù)管理,今天我們就來聊聊docker數(shù)據(jù)管理那些事。

    2024年02月12日
    瀏覽(23)
  • 【docker系列】docker實戰(zhàn)之部署SpringBoot項目

    【docker系列】docker實戰(zhàn)之部署SpringBoot項目

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月05日
    瀏覽(23)
  • 【云原生 | Kubernetes 系列】— Kubernetes存儲方案

    目錄 【云原生 | Kubernetes 系列】— Kubernetes存儲方案 ?? 一、基本存儲 EmptyDir HostPath NFS 搭建nfs服務(wù)器 ?? 二、高級存儲 PV和PVC pv pvc 演示 -NFS StorageClass(動態(tài)存儲) StorageClass準(zhǔn)備 創(chuàng)建deployment應(yīng)用StorageClass 創(chuàng)建StatefulSet應(yīng)用StorageClass ??三、配置存儲 ConfigMap ConfigMap 的創(chuàng)建

    2024年02月03日
    瀏覽(23)
  • 云原生Kubernetes系列 | Kubernetes Secret及ConfigMap

    ?? 使用某些鏡像例如mysql,是需要變量來傳遞密

    2024年02月04日
    瀏覽(28)
  • (【云原生 | Kubernetes 系列】— Kubernetes 1.28 存儲方案)

    EmptyDir 用途: 1: 緩存空間,例如基于磁盤的歸并排序。 2: 為耗時較長的計算任務(wù)提供檢查點,以便任務(wù)能方便地從崩潰前狀態(tài)恢復(fù)執(zhí)行。 3: 在 Web 服務(wù)器容器服務(wù)數(shù)據(jù)時,保存內(nèi)容管理器容器獲取的文件。 HostPath 例如,hostPath 的一些用法有: 運行一個需要訪問 Docker 內(nèi)部機

    2024年02月02日
    瀏覽(27)
  • 云原生技術(shù)系列:“一圖一文”全面了解云原生

    云原生技術(shù)系列:“一圖一文”全面了解云原生

    導(dǎo)言: 至如今,云計算這個概念已經(jīng)火了十年有余,我們這些相關(guān)IT從業(yè)者也經(jīng)歷了聽聞、理解、應(yīng)用、熟練這么個漫長的過程。當(dāng)下,千行百業(yè)已從積極擁抱云計算向升級為云原生應(yīng)用方向演進,特別在數(shù)字化時代的洪流中,云原生被視為未來社會數(shù)字化轉(zhuǎn)型最有效的利器

    2024年02月16日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包