首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在kubernetes client-go中创建没有复制控制器的部署

无法在kubernetes client-go中创建没有复制控制器的部署
EN

Stack Overflow用户
提问于 2017-03-07 11:44:46
回答 1查看 199关注 0票数 0

问题是,在不创建复制控制器的情况下,我无法创建部署规范。我不想使用复制控制器,因为我的应用程序始终只使用一个pod,并且我希望将重新启动策略设置为从不阻止任何已终止的容器尝试重新启动。

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:
restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]

上面是目标yaml文件,我想用kubernetes client-go实现和部署它,但是client-go目前只提供使用replication controller的部署。

代码语言:javascript
复制
// Define Deployments spec.
    deploySpec := &v1beta1.Deployment{
        TypeMeta: unversioned.TypeMeta{
            Kind:       "Deployment",
            APIVersion: "extensions/v1beta1",
    },
    ObjectMeta: v1.ObjectMeta{
        Name: "binary-search",
    },
    Spec: v1beta1.DeploymentSpec{
        Replicas: int32p(1),
        Template: v1.PodTemplateSpec{
            ObjectMeta: v1.ObjectMeta{
                Name:   appName,
                Labels: map[string]string{"app": appName},
            },
            Spec: v1.PodSpec{
                Containers: []v1.Container{
                    v1.Container{
                        Name:  "nginx-container",
                        Image: "nginx",
                        VolumeMounts: []v1.VolumeMount{
                            v1.VolumeMount{
                                MountPath: "/usr/share/nginx/html",
                                Name:      "shared-data",
                            },
                        },
                    },
                    v1.Container{
                        Name:  "debian-container",
                        Image: "debian",
                        VolumeMounts: []v1.VolumeMount{
                            v1.VolumeMount{
                                MountPath: "/pod-data",
                                Name:      "shared-data",
                            },
                        },
                        Command: []string{
                            "/bin/sh",
                        },
                        Args: []string{
                            "-c",
                            "echo Hello from the debian container > /pod-data/index1.html",
                        },
                    },
                },
                RestartPolicy: v1.RestartPolicyAlways,
                DNSPolicy:     v1.DNSClusterFirst,
                Volumes: []v1.Volume{
                    v1.Volume{
                        Name: "shared-data",
                        VolumeSource: v1.VolumeSource{
                            EmptyDir: &v1.EmptyDirVolumeSource{},
                        },
                    },
                },
            },
        },
    },
    }



// Implement deployment update-or-create semantics.
deploy := c.Extensions().Deployments(namespace)
    _, err := deploy.Update(deploySpec)

有什么建议吗?首先要感谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-07 23:15:43

如果您不想重启服务,则可以直接使用Pod。没有必要使用部署,因为只有当您想要自动Pod重启和推出更新时,这些部署才有意义。

代码看起来像这样(未经过测试):

代码语言:javascript
复制
podSpec := v1.PodSpec{
    Containers: []v1.Container{
        v1.Container{
            Name:  "nginx-container",
            Image: "nginx",
            VolumeMounts: []v1.VolumeMount{
                v1.VolumeMount{
                    MountPath: "/usr/share/nginx/html",
                    Name:      "shared-data",
                },
            },
        },
        v1.Container{
            Name:  "debian-container",
            Image: "debian",
            VolumeMounts: []v1.VolumeMount{
                v1.VolumeMount{
                    MountPath: "/pod-data",
                    Name:      "shared-data",
                },
            },
            Command: []string{
                "/bin/sh",
            },
            Args: []string{
                "-c",
                "echo Hello from the debian container > /pod-data/index1.html",
            },
        },
    },
    RestartPolicy: v1.RestartPolicyAlways,
    DNSPolicy:     v1.DNSClusterFirst,
    Volumes: []v1.Volume{
        v1.Volume{
            Name: "shared-data",
            VolumeSource: v1.VolumeSource{
                EmptyDir: &v1.EmptyDirVolumeSource{},
            },
        },
    },
}

// Implement deployment update-or-create semantics.
deploy := c.Core().PodsGetter(namespace)
_, err := deploy.Update(podSpec)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42639801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档