google container startup script

3/21/2016

I have created /usr/startup.sh script in google container which would like to execute it on startup of every pod.

I tried it doing it through command in yaml like below.

command: "sh /usr/start.sh" command: ["sh", "-c", "/usr/start.sh"]

Please let me if there is any kind of way that can execute defined script at the startup in google container/pod.

-- Nitin
google-kubernetes-engine
kubernetes

2 Answers

3/21/2016

Startup scripts run on node startup, not for every pod. We don't currently have a "hook" in kubelet to run whenever a pod starts on a node. Can you maybe explain what you're trying to do?

-- Tim Hockin
Source: StackOverflow

3/21/2016

You may want to look at the postStart lifecycle hook.

An example can be found in the kubernetes repo:

  containers:
  - name: nginx
    image: resouer/myapp:v6
    lifecycle:
      postStart:
        exec:
          command:
            - "cp"
            - "/app/myapp.war /work"

Here are the API docs:

// Lifecycle describes actions that the management system should take in response to container lifecycle
// events.  For the PostStart and PreStop lifecycle handlers, management of the container blocks
// until the action is complete, unless the container process fails, in which case the handler is aborted.
type Lifecycle struct {
    // PostStart is called immediately after a container is created.  If the handler fails, the container
    // is terminated and restarted.
    PostStart *Handler `json:"postStart,omitempty"`
    // PreStop is called immediately before a container is terminated.  The reason for termination is
    // passed to the handler.  Regardless of the outcome of the handler, the container is eventually terminated.
    PreStop *Handler `json:"preStop,omitempty"`
}
-- Ryan Cox
Source: StackOverflow