
# 通过特权容器功能优化内核参数
#### 前提条件
从客户端机器访问Kubernetes集群，需要使用Kubernetes命令行工具kubectl，请先连接kubectl。详情请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
#### 操作步骤
1. 通过后台创建DaemonSet，选择nginx镜像、开启特权容器、配置生命周期、添加hostNetwork: true字段。 
   1. 新建DaemonSet文件。
      ```
      vi daemonset.yaml
      ```
      Yaml示例如下：
      ![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/notice_3.0-zh-cn.png)
      spec.spec.containers.lifecycle字段是指容器启动后执行设置的命令。
      ```
      kind: DaemonSet
      apiVersion: apps/v1
      metadata:
        name: daemonset-test
        labels:
          name: daemonset-test
      spec:
        selector:
          matchLabels:
            name: daemonset-test
        template:
          metadata:
            labels:
              name: daemonset-test
          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
      ```
      
   
   2. 创建DaemonSet。
      ```
      kubectl create –f daemonSet.yaml
      ```
      
   
   
   
   
2. 查询DaemonSet是否创建成功。 
   ```
   kubectl get daemonset {daemonset_name}
   ```
   本示例执行命令为：
   ```
   kubectl get daemonset daemonset-test
   ```
   命令行终端显示如下类似信息：
   ```
   NAME               DESIRED    CURRENT   READY    UP-TO-DATE    AVAILABLE     NODE SELECTOR   AGE
   daemonset-test     2          2         2        2             2             <node>          2h
   ```
   
   
3. 在节点上查询DaemonSet的容器id。 
   ```
   kubectl get pod | grep {daemonset_name}
   ```
   本示例执行命令为：
   ```
   kubectl get pod | grep daemonset-test
   ```
   命令行终端显示如下类似信息：
   ```
   daemonset-test-mqdpv               1/1     Running             0          2h
   daemonset-test-n56vm               1/1     Running             0          2h
   ```
   
   
4. 进入容器。 
   ```
   kubectl exec -it {pod_name} -- /bin/sh
   ```
   本示例执行命令如下：
   ```
   kubectl exec -it daemonset-test-mqdpv -- /bin/sh
   ```
   
   
5. 查看容器中设置的启动后命令是否执行。 
   ```
   sysctl -a |grep net.ipv4.tcp_tw_reuse
   ```
   命令行终端显示如下信息，表明修改系统参数成功。
   ```
   net.ipv4.tcp_tw_reuse=1
   ```
   
   
 
