Merge pull request #1597 from devimc/topic/virtcontainers/ShimPrintsAgentLogs

virtcontainers: Use shim to print the agent logs if there is no proxy
This commit is contained in:
James O. D. Hunt
2019-05-01 14:47:48 +01:00
committed by GitHub
3 changed files with 34 additions and 20 deletions

View File

@@ -498,7 +498,7 @@ func (k *kataAgent) exec(sandbox *Sandbox, c Container, cmd types.Cmd) (*Process
} }
return prepareAndStartShim(sandbox, k.shim, c.id, req.ExecId, return prepareAndStartShim(sandbox, k.shim, c.id, req.ExecId,
k.state.URL, cmd, []ns.NSType{}, enterNSList) k.state.URL, "", cmd, []ns.NSType{}, enterNSList)
} }
func (k *kataAgent) updateInterface(ifc *vcTypes.Interface) (*vcTypes.Interface, error) { func (k *kataAgent) updateInterface(ifc *vcTypes.Interface) (*vcTypes.Interface, error) {
@@ -1214,8 +1214,17 @@ func (k *kataAgent) createContainer(sandbox *Sandbox, c *Container) (p *Process,
}) })
} }
// Ask to the shim to print the agent logs, if it's the process who monitors the sandbox and use_vsock is true (no proxy)
var consoleURL string
if sandbox.config.HypervisorConfig.UseVSock && c.GetAnnotations()[vcAnnotations.ContainerTypeKey] == string(PodSandbox) {
consoleURL, err = sandbox.hypervisor.getSandboxConsole(sandbox.id)
if err != nil {
return nil, err
}
}
return prepareAndStartShim(sandbox, k.shim, c.id, req.ExecId, return prepareAndStartShim(sandbox, k.shim, c.id, req.ExecId,
k.state.URL, c.config.Cmd, createNSList, enterNSList) k.state.URL, consoleURL, c.config.Cmd, createNSList, enterNSList)
} }
// handleEphemeralStorage handles ephemeral storages by // handleEphemeralStorage handles ephemeral storages by

View File

@@ -48,6 +48,9 @@ func (s *kataShim) start(sandbox *Sandbox, params ShimParams) (int, error) {
if config.Debug { if config.Debug {
args = append(args, "-log", "debug") args = append(args, "-log", "debug")
if params.ConsoleURL != "" {
args = append(args, "-agent-logs-socket", params.ConsoleURL)
}
} }
if config.Trace { if config.Trace {

View File

@@ -42,6 +42,7 @@ type ShimParams struct {
Token string Token string
URL string URL string
Console string Console string
ConsoleURL string
Terminal bool Terminal bool
Detach bool Detach bool
PID int PID int
@@ -147,7 +148,7 @@ func stopShim(pid int) error {
return nil return nil
} }
func prepareAndStartShim(sandbox *Sandbox, shim shim, cid, token, url string, cmd types.Cmd, func prepareAndStartShim(sandbox *Sandbox, shim shim, cid, token, url, consoleURL string, cmd types.Cmd,
createNSList []ns.NSType, enterNSList []ns.Namespace) (*Process, error) { createNSList []ns.NSType, enterNSList []ns.Namespace) (*Process, error) {
process := &Process{ process := &Process{
Token: token, Token: token,
@@ -163,6 +164,7 @@ func prepareAndStartShim(sandbox *Sandbox, shim shim, cid, token, url string, cm
Detach: cmd.Detach, Detach: cmd.Detach,
CreateNS: createNSList, CreateNS: createNSList,
EnterNS: enterNSList, EnterNS: enterNSList,
ConsoleURL: consoleURL,
} }
pid, err := shim.start(sandbox, shimParams) pid, err := shim.start(sandbox, shimParams)