zoukankan      html  css  js  c++  java
  • kubernetes(五)二进制安装-安装docker服务

    部署docker服务(在master节点上执行)

    1. 下载和分发 docker 二进制文件

      cd /opt/k8s/work
      wget https://download.docker.com/linux/static/stable/x86_64/docker-18.09.6.tgz
      tar -xvf docker-18.09.6.tgz
      
    2. 分发二进制文件到所有 worker 节点

      cd /opt/k8s/work
      export node_ip=192.168.0.114
      scp docker/*  root@${node_ip}:/opt/k8s/bin/
      ssh root@${node_ip} "chmod +x /opt/k8s/bin/*"
      
    3. 创建docker服务启动文件

      cd /opt/k8s/work
      cat > docker.service <<"EOF"
      [Unit]
      Description=Docker Application Container Engine
      Documentation=http://docs.docker.io
      
      [Service]
      WorkingDirectory=/data/k8s/docker
      Environment="PATH=/opt/k8s/bin:/bin:/sbin:/usr/bin:/usr/sbin"
      EnvironmentFile=-/run/flannel/docker
      ExecStart=/opt/k8s/bin/dockerd $DOCKER_NETWORK_OPTIONS
      ExecReload=/bin/kill -s HUP $MAINPID
      Restart=on-failure
      RestartSec=5
      LimitNOFILE=infinity
      LimitNPROC=infinity
      LimitCORE=infinity
      Delegate=yes
      KillMode=process
      
      [Install]
      WantedBy=multi-user.target
      EOF
      
      • EOF 前后有双引号,这样 bash 不会替换文档中的变量,如 $DOCKER_NETWORK_OPTIONS (这些环境变量是 systemd 负责替换的。);

      • dockerd 运行时会调用其它 docker 命令,如 docker-proxy,所以需要将 docker 命令所在的目录加到 PATH 环境变量中;

      • flanneld 启动时将网络配置写入 /run/flannel/docker 文件中,dockerd 启动前读取该文件中的环境变量 DOCKER_NETWORK_OPTIONS ,然后设置 docker0 网桥网段;

      • docker 从 1.13 版本开始,可能将 iptables FORWARD chain的默认策略设置为DROP,从而导致 ping 其它 Node 上的 Pod IP 失败,遇到这种情况时,需要手动设置策略为 ACCEPT:

        export node_ip=192.168.0.114
        ssh root@${node_ip}  "/sbin/iptables -P FORWARD ACCEPT"
        
    4. 分发 docker.service 文件到所有 worker 机器:

      cd /opt/k8s/work
      export node_ip=192.168.0.114
      scp docker.service root@${node_ip}:/etc/systemd/system/
      
    5. 配置和分发 docker 配置文件

      使用国内的仓库镜像服务器以加快 pull image 的速度,同时增加下载的并发数 (需要重启 dockerd 生效):

      cd /opt/k8s/work
      cat > docker-daemon.json <<EOF
      {
          "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"],
          "max-concurrent-downloads": 20,
          "live-restore": true,
          "max-concurrent-uploads": 10,
          "data-root": "/data/k8s/docker/data",
          "log-opts": {
            "max-size": "100m",
            "max-file": "5"
          }
      }
      EOF
      
      
    6. 分发 docker 配置文件到所有 worker 节点:

      cd /opt/k8s/work
      
      export node_ip=192.168.0.114
      ssh root@${node_ip} "mkdir -p  /etc/docker/ /data/k8s/docker/data"
      scp docker-daemon.json root@${node_ip}:/etc/docker/daemon.json
      
    7. 启动 docker 服务

      export node_ip=192.168.0.114
      ssh root@${node_ip} "systemctl daemon-reload && systemctl enable docker && systemctl restart docker"
      
    8. 检查服务运行状态

      export node_ip=192.168.0.114
      ssh root@${node_ip} "systemctl status docker|grep Active"
      
      • 确保状态为 active (running),否则查看日志,确认原因

      • 如果出现异常,通过如下命令查看

        journalctl -u docker
        
    9. 检查 docker0 网桥

      export node_ip=192.168.0.114
      ssh root@${node_ip} "/sbin/ip addr show flannel.1 && /sbin/ip addr show docker0"
      
      • 确认各 worker 节点的 docker0 网桥和 flannel.1 接口的 IP 处于同一个网段中

        输出内容

        export node_ip=192.168.0.114
        root@master:/opt/k8s/work# ssh root@${node_ip} "/sbin/ip addr show flannel.1 && /sbin/ip addr show docker0"
        4: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
            link/ether f2:fc:0f:7e:98:e4 brd ff:ff:ff:ff:ff:ff
            inet 172.30.78.0/32 scope global flannel.1
               valid_lft forever preferred_lft forever
            inet6 fe80::f0fc:fff:fe7e:98e4/64 scope link
               valid_lft forever preferred_lft forever
        5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
            link/ether 02:42:fd:1f:8f:d8 brd ff:ff:ff:ff:ff:ff
            inet 172.30.78.1/24 brd 172.30.78.255 scope global docker0
               valid_lft forever preferred_lft forever
        
        
      • 注意: 如果您的服务安装顺序不对或者机器环境比较复杂, docker服务早于flanneld服务安装,此时 worker 节点的 docker0 网桥和 flannel.1 接口的 IP可能不会同处同一个网段下,这个时候请先停止docker服务, 手工删除docker0网卡,重新启动docker服务后即可修复

        systemctl stop docker
        ip link delete docker0
        systemctl start docker
        
    10. 查看 docker 的状态信息

      root@slave:/opt/k8s/work# docker info
      Containers: 0
       Running: 0
       Paused: 0
       Stopped: 0
      Images: 0
      Server Version: 18.09.6
      Storage Driver: overlay2
       Backing Filesystem: extfs
       Supports d_type: true
       Native Overlay Diff: true
      Logging Driver: json-file
      Cgroup Driver: cgroupfs
      Plugins:
       Volume: local
       Network: bridge host macvlan null overlay
       Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
      Swarm: inactive
      Runtimes: runc
      Default Runtime: runc
      Init Binary: docker-init
      containerd version: bb71b10fd8f58240ca47fbb579b9d1028eea7c84
      runc version: 2b18fe1d885ee5083ef9f0838fee39b62d653e30
      init version: fec3683
      Security Options:
       apparmor
       seccomp
        Profile: default
      Kernel Version: 5.0.0-23-generic
      Operating System: Ubuntu 18.04.3 LTS
      OSType: linux
      Architecture: x86_64
      CPUs: 4
      Total Memory: 3.741GiB
      Name: slave
      ID: IDMG:7A6F:UNTP:IWVM:ZBK5:VHJ4:STC5:UXZX:HQT6:UUNE:YDOC:I27L
      Docker Root Dir: /data/k8s/docker/data
      Debug Mode (client): false
      Debug Mode (server): false
      Registry: https://index.docker.io/v1/
      Labels:
      Experimental: false
      Insecure Registries:
       127.0.0.0/8
      Registry Mirrors:
       https://docker.mirrors.ustc.edu.cn/
       https://hub-mirror.c.163.com/
      Live Restore Enabled: true
      Product License: Community Engine
      
      WARNING: No swap limit support
      
  • 相关阅读:
    vue-webpack介绍
    vue-ES6模块化的导入和导出
    vue-前端模块化
    vue-插槽作用域的使用
    vue-具名插槽的使用
    vue-插槽的基本使用
    vue-父组件获取子组件对象实例
    IO(六)
    IO(五)
    关于overflow:hidden
  • 原文地址:https://www.cnblogs.com/gaofeng-henu/p/12594610.html
Copyright © 2011-2022 走看看