部署方式

轻量级容器引擎(iSulad)服务端daemon为isulad,isulad可以通过配置文件进行配置,也可以通过命令行的方式进行配置,例如:isulad —xxx,优先级从高到低是:命令行方式>配置文件>代码中默认配置。

部署方式 - 图1 说明:
如果采用systemd管理iSulad进程,修改/etc/sysconfig/iSulad文件中的OPTIONS字段,等同于命令行方式进行配置。

  • 命令行方式

    在启动服务的时候,直接通过命令行进行配置。其配置选项可通过以下命令查阅:

    1. $ isulad --help
    2. lightweight container runtime daemon
    3. Usage: isulad [global options]
    4. GLOBAL OPTIONS:
    5. --authorization-plugin Use authorization plugin
    6. --cgroup-parent Set parent cgroup for all containers
    7. --cni-bin-dir The full path of the directory in which to search for CNI plugin binaries. Default: /opt/cni/bin
    8. --cni-conf-dir The full path of the directory in which to search for CNI config files. Default: /etc/cni/net.d
    9. --default-ulimit Default ulimits for containers (default [])
    10. -e, --engine Select backend engine
    11. -g, --graph Root directory of the iSulad runtime
    12. -G, --group Group for the unix socket(default is isulad)
    13. --help Show help
    14. --hook-spec Default hook spec file applied to all containers
    15. -H, --host The socket name used to create gRPC server
    16. --image-layer-check Check layer intergrity when needed
    17. --image-opt-timeout Max timeout(default 5m) for image operation
    18. --insecure-registry Disable TLS verification for the given registry
    19. --insecure-skip-verify-enforce Force to skip the insecure verify(default false)
    20. --log-driver Set daemon log driver, such as: file
    21. -l, --log-level Set log level, the levels can be: FATAL ALERT CRIT ERROR WARN NOTICE INFO DEBUG TRACE
    22. --log-opt Set daemon log driver options, such as: log-path=/tmp/logs/ to set directory where to store daemon logs
    23. --native.umask Default file mode creation mask (umask) for containers
    24. --network-plugin Set network plugin, default is null, suppport null and cni
    25. -p, --pidfile Save pid into this file
    26. --pod-sandbox-image The image whose network/ipc namespaces containers in each pod will use. (default "rnd-dockerhub.huawei.com/library/pause-${machine}:3.0")
    27. --registry-mirrors Registry to be prepended when pulling unqualified images, can be specified multiple times
    28. --start-timeout timeout duration for waiting on a container to start before it is killed
    29. -S, --state Root directory for execution state files
    30. --storage-driver Storage driver to use(default overlay2)
    31. -s, --storage-opt Storage driver options
    32. --tls Use TLS; implied by --tlsverify
    33. --tlscacert Trust certs signed only by this CA (default "/root/.iSulad/ca.pem")
    34. --tlscert Path to TLS certificate file (default "/root/.iSulad/cert.pem")
    35. --tlskey Path to TLS key file (default "/root/.iSulad/key.pem")
    36. --tlsverify Use TLS and verify the remote
    37. --use-decrypted-key Use decrypted private key by default(default true)
    38. -V, --version Print the version
    39. --websocket-server-listening-port CRI websocket streaming service listening port (default 10350)

    示例: 启动isulad,并将日志级别调整成DEBUG

    1. $ isulad -l DEBUG
  • 配置文件方式

    isulad配置文件为/etc/isulad/daemon.json,各配置字段说明如下:

    配置参数

    配置文件示例

    参数解释

    备注

    -e, —engine

    “engine”: “lcr”

    iSulad的运行时,默认是lcr

    -G, —group

    “group”: “isulad”

    socket所属组

    —hook-spec

    “hook-spec”: “/etc/default/isulad/hooks/default.json”

    针对所有容器的默认钩子配置文件

    -H, —host

    “hosts”: “unix:///var/run/isulad.sock”

    通信方式

    除本地socket外,还支持tcp://ip:port方式,port范围(0-65535,排除被占用端口)

    —log-driver

    “log-driver”: “file”

    日志驱动配置

    -l, —log-level

    “log-level”: “ERROR”

    设置日志输出级别

    —log-opt

    “log-opts”: {

    “log-file-mode”: “0600”,

    “log-path”: “/var/lib/isulad”,

    “max-file”: “1”,

    “max-size”: “30KB”

    }

    日志相关的配置

    可以指定max-file,max-size,log-path。max-file指日志文件个数;max-size指日志触发防爆的阈值,若max-file为1,max-size失效;log-path指定日志文件存储路径;log-file-mode用于设置日志文件的读写权限,格式要求必须为八进制格式,如0666。

    —start-timeout

    “start-timeout”: “2m”

    启动容器的耗时

    -p, —pidfile

    “pidfile”: “/var/run/isulad.pid”

    保存pid的文件

    当启动一个容器引擎的时候不需要配置,当需要启动两个以上的容器引擎时才需要配置。

    -g, —graph

    “graph”: “/var/lib/isulad”

    iSulad运行时的根目录

    -S, —state

    “state”: “/var/run/isulad”

    执行文件的根目录

    —storage-driver

    “storage-driver”: “overlay2”

    镜像存储驱动,默认为overlay2

    当前只支持overlay2

    -s, —storage-opt

    “storage-opts”: [ “overlay2.override_kernel_check=true” ]

    镜像存储驱动配置选项

    可使用的选项为:

    1. overlay2.override_kernel_check=true # 忽略内核版本检查
    2. overlay2.size=${size} # 设置rootfs quota限额为${size}大小
    3. overlay2.basesize=${size} #等价于overlay2.size

    —image-opt-timeout

    “image-opt-timeout”: “5m”

    镜像操作超时时间,默认为5m

    值为-1表示不限制超时。

    —registry-mirrors

    “registry-mirrors”: [ “docker.io” ]

    镜像仓库地址

    —insecure-registry

    “insecure-registries”: [ ]

    不使用TLS校验的镜像仓库

    —native.umask

    “native.umask”: “secure”

    容器umask策略,默认”secure”,normal为不安全配置

    设置容器umask值。

    支持配置空字符(使用默认值0027)、”normal”、”secure”:

    1. normal # 启动的容器umask值为0022
    2. secure # 启动的容器umask值为0027(默认值)

    —pod-sandbox-image

    “pod-sandbox-image”: “rnd-dockerhub.huawei.com/library/pause-aarch64:3.0”

    pod默认使用镜像,默认为”rnd-dockerhub.huawei.com/library/pause-${machine}:3.0”

    —network-plugin

    “network-plugin”: “”

    指定网络插件,默认为空字符,表示无网络配置,创建的sandbox只有loop网卡。

    支持cni和空字符,其他非法值会导致isulad启动失败。

    —cni-bin-dir

    “cni-bin-dir”: “”

    指定cni插件依赖的二进制的存储位置

    默认为/opt/cni/bin

    —cni-conf-dir

    “cni-conf-dir”: “”

    指定cni网络配置文件的存储位置

    默认为/etc/cni/net.d

    —image-layer-check=false

    “image-layer-check”: false

    开启镜像层完整性检查功能,设置为true;关闭该功能,设置为false。默认为关闭。

    isulad启动时会检查镜像层的完整性,如果镜像层被破坏,则相关的镜像不可用。isulad进行镜像完整性校验时,无法校验内容为空的文件和目录,以及链接文件。因此若镜像因掉电导致上述类型文件丢失,isulad的镜像数据完整性校验可能无法识别。isulad版本变更时需要检查是否支持该参数,如果不支持,需要从配置文件中删除。

    —insecure-skip-verify-enforce=false

    “insecure-skip-verify-enforce”: false

    Bool类型,是否强制跳过证书的主机名/域名验证,默认为false。当设置为true时,为不安全配置,会跳过证书的主机名/域名验证

    默认为false(不跳过),注意:因isulad使用的yajl json 解析库限制,若在/etc/isulad/daemon.json配置文件中配置非Bool类型的其他符合json格式的值时,isulad将使用默认值false。

    —use-decrypted-key=true

    “use-decrypted-key”: true

    Bool类型,指定是否使用不加密的私钥。指定为true,表示使用不加密的私钥;指定为false,表示使用的为加密后的私钥,即需要进行双向认证。

    默认配置为true(使用不加密的私钥),注意:因isulad使用的yajl json 解析库限制,若在/etc/isulad/daemon.json配置文件中配置非Bool类型的其他符合json格式的值时,isulad将使用默认值true。

    —tls

    “tls”:false

    Bool类型,是否使用TLS

    默认值为false, 仅用于-H tcp://IP:PORT方式

    —tlsverify

    “tlsverify”:false

    Bool类型,是否使用TLS,并验证远程访问

    仅用于-H tcp://IP:PORT方式

    —tlscacert

    —tlscert

    —tlskey

    “tls-config”: {

    “CAFile”: “/root/.iSulad/ca.pem”,

    “CertFile”: “/root/.iSulad/server-cert.pem”,

    “KeyFile”:”/root/.iSulad/server-key.pem”

    }

    TLS证书相关的配置

    仅用于-H tcp://IP:PORT方式

    —authorization-plugin

    “authorization-plugin”: “authz-broker”

    用户权限认证插件

    当前只支持authz-broker

    —cgroup-parent

    “cgroup-parent”: “lxc/mycgroup”

    字符串类型,容器默认cgroup父路径

    指定daemon端容器默认的cgroup父路径,如果客户端指定了—cgroup-parent,以客户端参数为准。

    注意:如果启了一个容器A,然后启一个容器B,容器B的cgroup父路径指定为容器A的cgroup路径,在删除容器的时候需要先删除容器B再删除容器A,否则会导致cgroup资源残留。

    —default-ulimits

    “default-ulimits”: {

    “nofile”: {

    “Name”: “nofile”,

    “Hard”: 6400,

    “Soft”: 3200

    }

    }

    ulimit指定限制的类型,soft值及hard值

    指定限制的资源类型,如“nofile”。两个字段名字必须相同,即都为nofile,否则会报错。Hard指定的值需要大于等于Soft’。如果Hard字段或者Soft字段未设置,则默认该字段默认为0。

    —websocket-server-listening-port

    websocket-server-listening-port“: 10350

    设置CRI websocket流式服务监听端口,默认端口号10350

    指定CRI websocket流式服务监听端,如果客户端指定了

    —websocket-server-listening-port,以客户端参数为准。端口范围1024-49151

    示例:

    1. $ cat /etc/isulad/daemon.json
    2. {
    3. "group": "isulad",
    4. "graph": "/var/lib/isulad",
    5. "state": "/var/run/isulad",
    6. "engine": "lcr",
    7. "log-level": "ERROR",
    8. "pidfile": "/var/run/isulad.pid",
    9. "log-opts": {
    10. "log-file-mode": "0600",
    11. "log-path": "/var/lib/isulad",
    12. "max-file": "1",
    13. "max-size": "30KB"
    14. },
    15. "log-driver": "stdout",
    16. "hook-spec": "/etc/default/isulad/hooks/default.json",
    17. "start-timeout": "2m",
    18. "storage-driver": "overlay2",
    19. "storage-opts": [
    20. "overlay2.override_kernel_check=true"
    21. ],
    22. "registry-mirrors": [
    23. "docker.io"
    24. ],
    25. "insecure-registries": [
    26. "rnd-dockerhub.huawei.com"
    27. ],
    28. "pod-sandbox-image": "",
    29. "image-opt-timeout": "5m",
    30. "native.umask": "secure",
    31. "network-plugin": "",
    32. "cni-bin-dir": "",
    33. "cni-conf-dir": "",
    34. "image-layer-check": false,
    35. "use-decrypted-key": true,
    36. "insecure-skip-verify-enforce": false
    37. }

    部署方式 - 图2 须知:
    默认配置文件/etc/isulad/daemon.json仅供参考,请根据实际需要进行配置