kubeasz/docs/04-安装docker服务.md

106 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## 04-安装docker服务.md
``` bash
roles/docker/
├── files
│   ├── daemon.json
│   ├── docker
│   └── docker-tag
├── tasks
│   └── main.yml
└── templates
└── docker.service.j2
```
请在另外窗口打开[roles/docker/tasks/main.yml](../roles/docker/tasks/main.yml) 文件,对照看以下讲解内容。
### 创建docker的systemd unit文件
``` bash
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.io
[Service]
Environment="PATH={{ bin_dir }}:/bin:/sbin:/usr/bin:/usr/sbin"
ExecStart={{ bin_dir }}/dockerd --log-level=error
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
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
```
+ dockerd 运行时会调用其它 docker 命令,如 docker-proxy所以需要将 docker 命令所在的目录加到 PATH 环境变量中;
+ docker 从 1.13 版本开始,将`iptables` 的`filter` 表的`FORWARD` 链的默认策略设置为`DROP`,从而导致 ping 其它 Node 上的 Pod IP 失败,因此必须在 `filter` 表的`FORWARD` 链增加一条默认允许规则 `iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT`
+ 运行`dockerd --help` 查看所有可以可配置参数,确保默认开启 `--iptables``--ip-masq` 选项
### 配置国内镜像加速
众所周知从国内下载docker官方仓库镜像非常缓慢所以对于k8s集群来说配置镜像加速非常重要配置 `/etc/docker/daemon.json`
``` bash
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
```
这将在后续部署calico下载 calico/node:v2.6.2镜像和kubedns/heapster/dashboard镜像时起到重要加速效果。
由于K8S的官方镜像存放在`gcr.io`仓库因此这个镜像加速对K8S的官方镜像没有效果好在`Docker Hub`上有很多K8S镜像的转存而`Docker Hub`上的镜像是国内可以加速的。这里推荐https://hub.docker.com/u/mirrorgooglecontainers/几乎能找到所有K8S相关的google镜像而且更新及时感谢维护者的辛勤付出后文将看到部署附加组件时基本都是用他们的镜像
### 清理 iptables
因为后续`calico`网络、`kube-proxy`等将大量使用 iptables规则安装前清空所有`iptables`策略规则;常见发行版`Ubuntu`的 `ufw` 和 `CentOS`的 `firewalld`等基于`iptables`的防火墙最好直接卸载,避免不必要的冲突。
``` bash
iptables -F && iptables -X \
&& iptables -F -t nat && iptables -X -t nat \
&& iptables -F -t raw && iptables -X -t raw \
&& iptables -F -t mangle && iptables -X -t mangle
```
### 启动 docker 略
### 安装docker查询镜像 tag的小工具
docker官方目前没有提供在命令行直接查询某个镜像的tag信息的方式网上找来一个脚本工具使用很方便。
``` bash
> docker-tag library/ubuntu
"14.04"
"16.04"
"17.04"
"latest"
"trusty"
"trusty-20171117"
"xenial"
"xenial-20171114"
"zesty"
"zesty-20171114"
>docker-tag mirrorgooglecontainers/kubernetes-dashboard-amd64
"v0.1.0"
"v1.0.0"
"v1.0.0-beta1"
"v1.0.1"
"v1.1.0-beta1"
"v1.1.0-beta2"
"v1.1.0-beta3"
"v1.7.0"
"v1.7.1"
"v1.8.0"
```
+ 需要先apt安装轻量JSON处理程序 `jq`
+ 然后下载脚本即可使用
+ 脚本很简单,就一行命令如下
``` bash
#!/bin/bash
curl -s -S "https://registry.hub.docker.com/v2/repositories/$@/tags/" | jq '."results"[]["name"]' |sort
```