成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Terraform與Kubernetes

solocoder / 1099人閱讀

看到Terraform可以替代kubectl管理k8s資源的生命周期,于是調(diào)研了下它的使用場景,并對比Terraform和Helm的區(qū)別

一.Terraform介紹

Terraform是一款開源工具,出自HashiCorp公司,著名的Vagrant、Consul也出自于該公司。其主要作用是:讓用戶更輕松地管理、配置任何基礎(chǔ)架構(gòu),管理公有和私有云服務(wù),也可以管理外部服務(wù),如GitHub,Nomad。

區(qū)別于ansible和puppet等傳統(tǒng)的配置管理工具,Terraform趨向于更上層的一個組裝者。

Terraform使用模板來定義基礎(chǔ)設(shè)施,通過指令來實現(xiàn)資源創(chuàng)建/更新/銷毀的全生命周期管理,實現(xiàn)“基礎(chǔ)設(shè)施即代碼”,具體示例如下:

resource "alicloud_instance" "web" {
    # cn-beijing
    availability_zone = "cn-beijing-b"
    image_id = "ubuntu_140405_32_40G_cloudinit_20161115.vhd"

    system_disk_category = "cloud_ssd"

    instance_type = "ecs.n1.small"
    internet_charge_type = "PayByBandwidth"
    security_groups = ["${alicloud_security_group.tf_test_foo.id}"]
    instance_name = "test_foo"
    io_optimized = "optimized"
}

這是阿里云的一個Terraform邏輯,執(zhí)行terraform apply,就可以創(chuàng)建一個ECS實例

Terraform AliCloud provider: terraform-provider

二.Terraform支持K8S

17年9月,Terraform官方宣布支持Kubernetes,提供Kubernetes應(yīng)用程序的完整生命周期管理,包含Pod的創(chuàng)建、刪除以及副本控制等功能(通過調(diào)用API)。

以下是操作示例:

1.安裝kubernete集群

當(dāng)前k8s的installer列表,已經(jīng)很多了...

使用Terraform在阿里云上安裝k8s集群:kubernetes-examples

2.創(chuàng)建應(yīng)用:

1.初始化k8s-provider

因為是調(diào)用apiserver,所以需要指定k8s集群的連接方式

provider "kubernetes" {} // 默認(rèn)~/.kube/config
或:
provider "kubernetes" {
  host = "https://104.196.242.174"

  client_certificate     = "${file("~/.kube/client-cert.pem")}"
  client_key             = "${file("~/.kube/client-key.pem")}"
  cluster_ca_certificate = "${file("~/.kube/cluster-ca-cert.pem")}"
}

2.初始化terraform

$ terraform init

Initializing provider plugins...
- Downloading plugin for provider "kubernetes"...

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

3.創(chuàng)建RC

// Terraform不支持Deployment
// issue:https://github.com/terraform-providers/terraform-provider-kubernetes/issues/3

resource "kubernetes_replication_controller" "nginx" {
  metadata {
    name = "scalable-nginx-example"
    labels {
      App = "ScalableNginxExample"
    }
  }

  spec {
    replicas = 2
    selector {
      App = "ScalableNginxExample"
    }
    template {
      container {
        image = "nginx:1.7.8"
        name  = "example"

        port {
          container_port = 80
        }

        resources {
          limits {
            cpu    = "0.5"
            memory = "512Mi"
          }
          requests {
            cpu    = "250m"
            memory = "50Mi"
          }
        }
      }
    }
  }
}

4.創(chuàng)建service

resource "kubernetes_service" "nginx" {
  metadata {
    name = "nginx-example"
  }
  spec {
    selector {
      App = "${kubernetes_replication_controller.nginx.metadata.0.labels.App}"
    }
    port {
      port = 80
      target_port = 80
    }

    type = "LoadBalancer"
  }
}

4.查看和執(zhí)行

以上的步驟均為執(zhí)行計劃的定義
執(zhí)行操作:terraform apply
查看當(dāng)前執(zhí)行幾乎:terraform plan
三.為什么使用Terraform

1.如果你的基礎(chǔ)設(shè)施(虛機(jī)、BLB等)是用Terraform來管理,那么你無需任何成本,可以用同樣的配置語言,來管理k8s集群

2.完整的生命周期管理

3.每個執(zhí)行的同步反饋

4.關(guān)系圖譜:比如PVC和PV,如果PV創(chuàng)建失敗,則不會去執(zhí)行PVC的流程

四.與Helm的對比

如果是對K8S做上層的資源管理,大多數(shù)人會想到用Helm:參考

以下是Helm與Terraform都創(chuàng)建一個APP的操作對比:https://dzone.com/articles/te...

Terraform的優(yōu)勢:

1.如果你的基礎(chǔ)設(shè)施已經(jīng)用了Terraform,那么k8s集群管理也可以直接用這個,沒有學(xué)習(xí)成本

2.Terraform不需要在k8s集群中安裝任何組件,它通過APISERVER管理資源

Terraform的缺點(diǎn):

1.對K8S的支持還比較弱,而且17年9月才開始支持,項目還在初期

2.嚴(yán)重依賴Terraform的基礎(chǔ)設(shè)施provider,比如外部磁盤、consul等沒有支持的話,k8s中無法使用

2.不支持beta資源,這個是硬傷,如:Deployment/StatefulSet/Daemonset不支持

3.沒有生態(tài)和市場的概念,比如helm中的倉庫,共享大家的應(yīng)用倉庫

五.吐槽

對于Terraform,不支持Deployment這一條,足以讓很多人放棄這個方案,而issue中對于這個的討論,也有點(diǎn)不太樂觀

必須在v1中的資源才會支持。對于Deployment大家只能用RC代替、或者kube exec加進(jìn)去(尬

但對于kubernetes而言,beta階段的很多資源,已經(jīng)被大家廣泛使用(Deployment、Daemonset),而且新版本的Deployment已經(jīng)變成了apps/v1。

k8s各種版本(v1、apps/v1)的區(qū)別:參考文章

不知道后續(xù)Terraform有沒有更多的支持,觀望下~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25288.html

相關(guān)文章

  • TerraformKubernetes

    看到Terraform可以替代kubectl管理k8s資源的生命周期,于是調(diào)研了下它的使用場景,并對比Terraform和Helm的區(qū)別 一.Terraform介紹 Terraform是一款開源工具,出自HashiCorp公司,著名的Vagrant、Consul也出自于該公司。其主要作用是:讓用戶更輕松地管理、配置任何基礎(chǔ)架構(gòu),管理公有和私有云服務(wù),也可以管理外部服務(wù),如GitHub,Nomad。...

    mengera88 評論0 收藏0
  • 如何創(chuàng)建高效、經(jīng)濟(jì)的Kubernetes集群

    摘要:本文是介紹關(guān)于如何創(chuàng)建一個高效的集群,用于在上使用和的開發(fā)目的。單擊左下角的按鈕,忽略警告并強(qiáng)制訪問頁面。取而代之的,我們將在這里使用,在上創(chuàng)建代理,自動設(shè)置這些由服務(wù)器管理的集群。 Kubernetes是我主要學(xué)習(xí)的主題之一。我知道不光是我,還有一定數(shù)量的人愿意在工作之余進(jìn)一步使用和研究它。 本文是介紹關(guān)于如何創(chuàng)建一個高效的Kubernetes集群,用于在Scaleway上使用Ter...

    BaronZhang 評論0 收藏0
  • 如何使用OPA實現(xiàn)多云策略和流程可移植性

    摘要:如何允許開發(fā)人員團(tuán)隊在多云和混合云環(huán)境中編寫和實施一致的策略和授權(quán)。使用跨云創(chuàng)建一致的策略和流程開放策略代理是一種流行的工具,正是因為它與域無關(guān)。簡而言之,組織無需浪費(fèi)任何時間對應(yīng)用程序進(jìn)行逆向工程以實現(xiàn)多云可移植性。OpenPolicy Agent如何允許開發(fā)人員團(tuán)隊在多云和混合云環(huán)境中編寫和實施一致的策略和授權(quán)。 隨著多云戰(zhàn)略成為完全主流,公司和開發(fā)團(tuán)隊必須弄清楚如何在云環(huán)境中創(chuàng)建...

    BLUE 評論0 收藏0
  • 使用Kubernetes你需要知道的硬道理

    摘要:是谷歌內(nèi)部為解決這個問題所做的工作的產(chǎn)物,它為管理容器如何在整個集群中運(yùn)行提供了一個單一的框架。在云中使用服務(wù)在許多云中作為標(biāo)準(zhǔn)問題項提供,盡管它在谷歌云平臺,中最突出地表現(xiàn)為本地特性。使用,運(yùn)行控制平面,將重點(diǎn)部署將用于所需配置的容器。每一項創(chuàng)新都會帶來新的復(fù)雜性。容器使以一種方便的、可移植的形式打包和運(yùn)行應(yīng)用程序成為可能,但至少要說以規(guī)模管理容器是一個挑戰(zhàn)。Kubernetes是谷歌內(nèi)部...

    fyber 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<