Modifying Kernel Parameters Using a Privileged Container
Prerequisites
To access a Kubernetes cluster from a client, you need to use the Kubernetes command line tool kubectl. For details about how to connect to kubectl, see Connecting to a Kubernetes Cluster Using kubectl or web-terminal.
Procedure
- Create a DaemonSet in the background, select the Nginx image, enable the Privileged Container, configure the lifecycle, and add the hostNetwork field (value: true).
- Create a DaemonSet file.
An example YAML file is provided as follows:
The spec.spec.containers.lifecycle field indicates the command that will be run after the container is started.
kind: DaemonSet apiVersion: apps/v1 metadata: name: daemonset-test labels: name: daemonset-test enable: true spec: selector: matchLabels: name: daemonset-test template: metadata: labels: name: daemonset-test enable: true spec: hostNetwork: true containers: - name: daemonset-test image: nginx:alpine-perl command: - "/bin/sh" args: - "-c" - while :; do time=$(date);done imagePullPolicy: IfNotPresent lifecycle: postStart: exec: command: - sysctl - "-w" - net.ipv4.tcp_tw_reuse=1 securityContext: privileged: true imagePullSecrets: - name: default-secret - Create a DaemonSet.
- Create a DaemonSet file.
- Check whether the DaemonSet is successfully created.
Kubectl get daemonset DaemonSet name
In this example, run the following command:
Kubectl get daemonset daemonset-test
Information similar to the following is displayed:
NAME DESIRED CURRENT READY UP-T0-DATE AVAILABLE NODE SELECTOR AGE daemonset-test 2 2 2 2 2 <node> 2h
- Query the container ID of the DaemonSet.
docker ps -a|grep DaemonSet name
In this example, run the following command:
docker ps -a|grep daemonset-test
Information similar to the following is displayed:
897b99faa9ce 3e094d5696c1 "/bin/sh -c while..." 31 minutes ago Up 30 minutes ault_fa7cc313-4ac1-11e9-a716-fa163e0aalba_0
- Access the container.
docker exec -it containerid /bin/sh
In this example, run the following command:
docker exec -it 897b99faa9ce /bin/sh
- Check whether the configured command is executed after the container is started.
sysctl -a |grep net.ipv4.tcp_tw_reuse
If the following information is displayed, the system parameters are modified successfully:
net.ipv4.tcp_tw_reuse=1
Last Article: Upgrading Pods Without Interrupting Services
Next Article: Initializing a Container
Did this article solve your problem?
Thank you for your score!Your feedback would help us improve the website.