(KULLANIMSIZ) Marathon REST API aracılığıyla DC/OS kapsayıcı yönetimi

Uyarı

Azure Container Service (ACS) kullanım dışı bırakılıyor. ACS'ye yeni özellik veya işlevsellik eklenmiyor. Tüm API'ler, portal deneyimi, CLI komutları ve belgeleri kullanım dışı olarak işaretlenir.

Daha fazla bilgi için bkz. Azure.com'da Azure Container Service kullanımdan kaldırma duyurusu.

Aşağıdaki Azure Market çözümlerinden birini dağıtmanızı öneririz:

Kubernetes kullanmak istiyorsanız bkz. Azure Kubernetes Service.

DC/OS, temel donanımı özetlerken, kümelenmiş iş yüklerini dağıtmak ve ölçeklendirmek için ortam sağlar. DC/OS’nin en üstünde, hesaplama iş yüklerini zamanlamayı ve yürütmeyi yöneten bir çerçeve vardır. Çerçeveler birçok popüler iş yükü için kullanılabilir olsa da, bu belge Marathon REST API'sini kullanarak kapsayıcı dağıtımları oluşturmaya ve ölçeklendirmeye başlamanızı sağlar.

Önkoşullar

Bu örneklerin üzerinden geçmeden önce, Azure Kapsayıcı Hizmeti’nde yapılandırılan bir DC/OS kümeniz olması gerekir. Bu kümeye uzaktan bağlantınız olması da gerekir. Bu öğeler hakkında daha fazla bilgi için, aşağıdaki makalelere bakın:

DC/OS API'lerine erişme

Azure Container Service kümesine bağlandıktan sonra DC/OS ve ilgili REST API'lerine http://localhost:local-port. Bu belgedeki örneklerde, bağlantı noktası 80 üzerinde tünel oluşturulmaktadır. Örneğin Marathon uç noktalarına URI'lerden itibaren ulaşılabilir http://localhost/marathon/v2/.

Çeşitli API'ler hakkında daha fazla bilgi için, Marathon API’si ve Chronos API’si için Mesosphere belgelerine ve Mesos Scheduler API’si için Apache belgelerine bakın.

DC/OS’den ve Marathon’dan bilgi toplama

KAPSAYıCıları DC/OS kümesine dağıtmadan önce DC/OS kümesi hakkında DC/OS aracılarının adları ve durumu gibi bazı bilgileri toplayın. Bunu yapmak için, DC/OS REST API’sinin master/slaves uç noktasını sorgulayın. Her şey yolunda giderse, sorgu DC/OS aracıları ve her biri için çeşitli özellikler listesini döndürür.

curl https://localhost/mesos/master/slaves

Şimdi, DC/OS kümesine geçerli uygulama dağıtımlarını denetlemek için Marathon /apps uç noktasını kullanın. Bu yeni bir küme ise, uygulamalar için boş bir dizi görürsünüz.

curl localhost/marathon/v2/apps

{"apps":[]}

Docker biçimli kapsayıcı dağıtma

Hedeflenen dağıtımı açıklayan bir JSON dosyası kullanarak Marathon REST API aracılığıyla Docker biçimli kapsayıcılar dağıtırsınız. Aşağıdaki örnek, kümedeki özel bir aracıya bir Nginx kapsayıcısı dağıtır.

{
  "id": "nginx",
  "cpus": 0.1,
  "mem": 32.0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "nginx",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 80, "servicePort": 9000, "protocol": "tcp" }
      ]
    }
  }
}

Docker biçimli bir kapsayıcı dağıtmak için JSON dosyasını erişilebilir bir konumda depolayın. Ardından, kapsayıcıyı dağıtmak için aşağıdaki komutu çalıştırın. JSON dosyasının adını belirtin (marathon.json bu örnekte).

curl -X POST https://localhost/marathon/v2/apps -d @marathon.json -H "Content-type: application/json"

Çıkış aşağıdakine benzer:

{"version":"2015-11-20T18:59:00.494Z","deploymentId":"b12f8a73-f56a-4eb1-9375-4ac026d6cdec"}

Şimdi, uygulamalar için Marathon’u sorguladığınızda, bu yeni uygulama çıktıda görünür.

curl localhost/marathon/v2/apps

Kapsayıcıya ulaşma

Nginx'in kümedeki özel aracılardan birinde bir kapsayıcıda çalıştığını doğrulayabilirsiniz. Kapsayıcının çalıştırıldığı konağı ve bağlantı noktasını bulmak için, çalışan görevler için Marathon'u sorgula:

curl localhost/marathon/v2/tasks

Çıkıştaki değerini host (değerine 10.32.0.xbenzer bir IP adresi) ve değerini portsbulun.

Şimdi kümenin yönetim FQDN'sine bir SSH terminal bağlantısı (tünelli bağlantı değil) oluşturun. Bağlandıktan sonra ve değerlerinin doğrularını hostportsdeğiştirerek aşağıdaki isteği yapın:

curl http://host:ports

Nginx sunucu çıkışı aşağıdakine benzer:

Nginx from container

Kapsayıcılarınızı ölçeklendirme

Uygulama dağıtımlarının ölçeğini genişletmek veya ölçeklendirmek için Marathon API'sini kullanabilirsiniz. Önceki örnekte, uygulamanın bir örneğini dağıttınız. Şimdi bunun ölçeğini uygulamanın üç örneğine genişletelim. Bunu yapmak için, aşağıdaki JSON metnini kullanarak bir JSON dosyası oluşturun ve erişilebilir bir konumda depolayın.

{ "instances": 3 }

Tünelli bağlantınızdan aşağıdaki komutu çalıştırarak uygulamanın ölçeğini genişletin.

Not

URI'yi http://localhost/marathon/v2/apps/ , ölçeklendirilecek uygulamanın kimliği izler. Burada sağlanan Nginx örneğini kullanıyorsanız URI şu şekilde olabilir: http://localhost/marathon/v2/apps/nginx.

curl https://localhost/marathon/v2/apps/nginx -H "Content-type: application/json" -X PUT -d @scale.json

Son olarak, uygulamalar için Marathon uç noktasını sorgulayın. Artık üç adet Nginx kapsayıcısı olduğunu görürsünüz.

curl localhost/marathon/v2/apps

Eşdeğer PowerShell komutları

Bir Windows sisteminde PowerShell komutlarını kullanarak aynı eylemleri gerçekleştirebilirsiniz.

DC/OS kümesi hakkında aracı adları ve aracı durumu gibi bilgileri toplamak için aşağıdaki komutu çalıştırın:

Invoke-WebRequest -Uri https://localhost/mesos/master/slaves

Docker biçimli kapsayıcıları Marathon aracılığıyla, hedeflenen dağıtımı açıklayan bir JSON dosyası kullanarak dağıtın. Aşağıdaki örnek, Nginx kapsayıcısı DC/OS aracısı bağlama bağlantı noktası 80'i kapsayıcının 80 numaralı bağlantı noktasına dağıtır.

{
  "id": "nginx",
  "cpus": 0.1,
  "mem": 32.0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "nginx",
      "network": "BRIDGE",
      "portMappings": [
        { "containerPort": 80, "servicePort": 9000, "protocol": "tcp" }
      ]
    }
  }
}

Docker biçimli bir kapsayıcı dağıtmak için JSON dosyasını erişilebilir bir konumda depolayın. Ardından, kapsayıcıyı dağıtmak için aşağıdaki komutu çalıştırın. JSON dosyasının yolunu belirtin (marathon.json bu örnekte).

Invoke-WebRequest -Method Post -Uri https://localhost/marathon/v2/apps -ContentType application/json -InFile 'c:\marathon.json'

Marathon API’sini uygulama dağıtımlarının ölçeğini genişletmek ve ölçeğini daraltmak için de kullanabilirsiniz. Önceki örnekte, uygulamanın bir örneğini dağıttınız. Şimdi bunun ölçeğini uygulamanın üç örneğine genişletelim. Bunu yapmak için, aşağıdaki JSON metnini kullanarak bir JSON dosyası oluşturun ve erişilebilir bir konumda depolayın.

{ "instances": 3 }

Uygulamanın ölçeğini genişletmek için aşağıdaki komutu çalıştırın:

Not

URI'yi http://localhost/marathon/v2/apps/ , ölçeklendirilecek uygulamanın kimliği izler. Burada sağlanan Nginx örneğini kullanıyorsanız URI http://localhost/marathon/v2/apps/nginx.

Invoke-WebRequest -Method Put -Uri https://localhost/marathon/v2/apps/nginx -ContentType application/json -InFile 'c:\scale.json'

Sonraki adımlar