Kubelet-rkt: Add useful informations for Ops on the Kubelet Host

Create a Systemd SyslogIdentifier inside the [Service]
Create a Systemd Description inside the [Unit]
pull/6/head
Julien Balestra 2017-01-17 10:29:50 +01:00
parent 7b471136ba
commit 3841690dbf
2 changed files with 43 additions and 0 deletions

View File

@ -1108,6 +1108,18 @@ func (r *Runtime) getSelinuxContext(opt *v1.SELinuxOptions) (string, error) {
return strings.Join(ctx, ":"), nil
}
// From the generateName or the podName return a basename for improve the logging with the Journal
// journalctl -t podBaseName
func constructSyslogIdentifier(generateName string, podName string) string {
if (len(generateName) > 1 && generateName[len(generateName) - 1] == '-') {
return generateName[0:len(generateName) - 1]
} else if (len(generateName) > 0) {
return generateName
} else {
return podName
}
}
// preparePod will:
//
// 1. Invoke 'rkt prepare' to prepare the pod, and get the rkt pod uuid.
@ -1174,6 +1186,9 @@ func (r *Runtime) preparePod(pod *v1.Pod, podIP string, pullSecrets []v1.Secret,
// This enables graceful stop.
newUnitOption("Service", "KillMode", "mixed"),
newUnitOption("Service", "TimeoutStopSec", fmt.Sprintf("%ds", getPodTerminationGracePeriodInSecond(pod))),
// Ops helpers
newUnitOption("Unit", "Description", pod.Name),
newUnitOption("Service", "SyslogIdentifier", constructSyslogIdentifier(pod.GenerateName, pod.Name)),
// Track pod info for garbage collection
newUnitOption(unitKubernetesSection, unitPodUID, string(pod.UID)),
newUnitOption(unitKubernetesSection, unitPodName, pod.Name),

View File

@ -1952,3 +1952,31 @@ func TestPreparePodArgs(t *testing.T) {
assert.Equal(t, testCase.cmd, cmd, fmt.Sprintf("Test case #%d", i))
}
}
func TestConstructSyslogIdentifier(t *testing.T) {
testCases := []struct {
podName string
podGenerateName string
identifier string
}{
{
"prometheus-node-exporter-rv90m",
"prometheus-node-exporter-",
"prometheus-node-exporter",
},
{
"simplepod",
"",
"simplepod",
},
{
"p",
"",
"p",
},
}
for i, testCase := range testCases {
identifier := constructSyslogIdentifier(testCase.podGenerateName, testCase.podName)
assert.Equal(t, testCase.identifier, identifier, fmt.Sprintf("Test case #%d", i))
}
}