部署k8s所需的docker環境遇到問題總結

部署採用的是阿里雲的一鍵部署腳本:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

創建所需目錄:

mkdir -p /etc/docker /data/docker

然後修改docker的配置文件:

/etc/docker/daemon.json
{
  "graph": "/data/docker",
  "storage-driver": "overlay2",
  "insecure-registries": ["registry.access.redhat.com","quay.io","harbor.od.com"],
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
  "bip": "172.7.21.1/24",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true
}

啓動docker主進程:

systemctl start docker

報錯如下:

-- Unit docker.service has begun starting up.
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.461032341+08:00" level=warning msg="The \"graph\" config file option is deprecated. Please use \"data-
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.461139245+08:00" level=info msg="Starting up"
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.462111770+08:00" level=info msg="parsed scheme: \"unix\"" module=grpc
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.462133686+08:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=gr
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.462156382+08:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/co
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.462170319+08:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.463849163+08:00" level=info msg="parsed scheme: \"unix\"" module=grpc
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.463873948+08:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=gr
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.463891615+08:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/co
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: time="2020-03-23T15:57:25.463901258+08:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
3月 23 15:57:25 hdss7-200.host.com dockerd[4420]: failed to start daemon: error initializing graphdriver: overlay2: the backing <unknown> filesystem is formatted without d_type s
3月 23 15:57:25 hdss7-200.host.com systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE

帖下環境的各個版本:

[root@hdss7-200 ~]# rpm -qa |grep docker
docker-ce-cli-19.03.8-3.el7.x86_64
docker-ce-19.03.8-3.el7.x86_64
[root@hdss7-200 ~]# uname -a
Linux hdss7-200.host.com 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@hdss7-200 ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

yum update -y 升級了系統也是無法重啓

但是docker存儲驅動我更換爲devicemapper是可以啓動的:  "storage-driver": "devicemapper"

因爲overlay2的性能是遠高於devicemapper的,無論是生產環境還是docker的社區都是建議使用這個驅動,這個問題是繞不過的

百度了一下,我們下來看下文件系統是否支持了ftype,1表示開啓,0爲關閉

[root@hdss7-200 ~]# xfs_info /|grep ftype
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0

由於我是mac的PD虛擬機虛擬出來的機器,windows使用VM可能不會遇到這個問題,ftype沒有開啓的話,重新格式化磁盤,加上這個參數的支持即可

我這裏新加了一塊磁盤,專門用來掛載docker的存儲目錄,打開虛機配置,新增磁盤

image.png

[root@test-docker ~]# fdisk  -l
磁盤 /dev/sda:9663 MB, 9663676416 字節,18874368 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 4096 字節
I/O 大小(最小/最佳):4096 字節 / 4096 字節
磁盤標籤類型:dos
磁盤標識符:0x00012036
   設備 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1050623      524288   83  Linux
/dev/sda2         1050624     2099199      524288   82  Linux swap / Solaris
/dev/sda3         2099200    18868223     8384512   83  Linux
磁盤 /dev/sdb:4294 MB, 4294967296 字節,8388608 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 4096 字節
I/O 大小(最小/最佳):4096 字節 / 4096 字節

我們可以看到已經有了一塊新的磁盤,接下來對磁盤格式化

[root@test-docker ~]# mkfs.xfs -n ftype=1 /dev/sdb
meta-data=/dev/sdb               isize=512    agcount=4, agsize=262144 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1048576, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

查看UUID,寫入fstab掛載:

[root@test-docker ~]# blkid /dev/sdb
/dev/sdb: UUID="19c3255a-1cfe-4636-b6fd-a3773b8c0dd4" TYPE="xfs"
[root@test-docker ~]# cat /etc/fstab
UUID=d267d18d-f3c2-4f41-9569-1e7b14c9bab9 /                       xfs     defaults        0 0
UUID=b0c55bef-7339-4fe9-a3aa-a07a83b14796 /boot                   xfs     defaults        0 0
UUID=cd27ca37-2d74-4276-b9bc-18e330da344d swap                    swap    defaults        0 0
UUID=19c3255a-1cfe-4636-b6fd-a3773b8c0dd4 /data/docker            xfs     defaults        0 0
[root@test-docker ~]# mount -a

查看是否支持ftype:

[root@test-docker ~]# xfs_info  /data/docker|grep ftype
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1

再次啓動docker進程,即可


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章