Kubernetes java-api更新容器图像

时间:2015-12-03 21:51:11

标签: java api client kubernetes fabric8

我尝试使用Gradle和Fabric8 Java kubernetes-client在CI中自动部署测试版本。

我试图找到正确的语法来使用新的Docker图像标记更新RC(不是:最新的)。

像...一样的东西。

client.replacationControllers()
      .inNamespace('default')
      .withName('mycirc')
      .edit()
      .editSpec()
      .editTemplate()
        .editSpec()
          .withContainer('mycontainername')
            .withImage('myimage:newtag')
          .endContainer()   // <--- Not sure how to do this previous line
        .endSpec()
      .endTemplate()
      .endSpec()
      .done()

我们可以更新容器而无需完全删除和重建容器吗?

2 个答案:

答案 0 :(得分:1)

这里有一个更新图像的例子: https://github.com/fabric8io/kubernetes-client/blob/master/kubernetes-examples/src/main/java/io/fabric8/kubernetes/examples/FullExample.java#L136

            // Update the RC - change the image to apache
            client.replicationControllers().inNamespace("thisisatest").withName("nginx-controller").edit().editSpec().editTemplate().withNewSpec()
                    .addNewContainer().withName("nginx").withImage("httpd")
                    .addNewPort().withContainerPort(80).endPort()
                    .endContainer()
                    .endSpec()
                    .endTemplate()
                    .endSpec().done();

虽然正如评论中指出的那样,这可能不会立即更新pod,除非客户端正在这样做。

看起来客户端也支持滚动更新,它将更新pod:                 。client.replicationControllers()inNamespace( “thisisatest”)withName( “nginx的控制器”)轧制()updateImage( “nginx的”);。。。

答案 1 :(得分:0)

您还可以通过以下代码

对副本集进行滚动更新

[ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: site]
   System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +280

[HttpException (0x80004005): Specified argument was out of the range of valid values.
Parameter name: site]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +10043436
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254