Я не смог найти информацию о 3 проблемах, с которыми я столкнулся в контейнере.Надеюсь на более глубокое понимание операций в контейнерах.
Приходится продолжать перестраивать мою среду kubernetes из-за проблем (на первый взгляд), связанных с контейнерами, в основном из-за дискового давления.Такое ощущение, что исполняемые файлы-контейнеры и связанные с ними владельцы сокетов играют свою роль.Справочник /var/lib/containerd/io.containerd.content.v1.content
пополняется со временем.Я заканчиваю тем, что удаляю снимки, капли и т. Д. Из этого места.Иногда это помогает мне двигаться вперед, но часто стручки заканчиваются в состоянии «Выселены» или «Инициированы» на неопределенный срокМне не хватает критических знаний о kubernetes GC, необходимых владениях контейнерных файлов.
Немного информации из среды виртуальных машин на голом железе:
$ uname -a
Linux node1.home 4.4.0-131-generic #157-Ubuntu SMP Thu Jul 12 15:51:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ free -m
total used free shared buff/cache available
Mem: 3951 772 1649 40 1529 2899
Swap: 974 0 974
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.5G 0 1.5G 0% /dev
tmpfs 301M 32M 270M 11% /run
/dev/sda1 14G 4.8G 8.3G 37% /
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
tmpfs 301M 0 301M 0% /run/user/1000
shm 64M 0 64M 0% /run/containerd/io.containerd.grpc.v1.cri/sandboxes/7a8ff8ecad13bd7b8bc6547dcfb330e53b073029cfb46ee4e5169a3da721f234/shm
overlay 14G 4.8G 8.3G 37% /run/containerd/io.containerd.runtime.v1.linux/k8s.io/7a8ff8ecad13bd7b8bc6547dcfb330e53b073029cfb46ee4e5169a3da721f234/rootfs
overlay 14G 4.8G 8.3G 37% /run/containerd/io.containerd.runtime.v1.linux/k8s.io/8a84f4e50b272d39785f575003c53c013363d2428f4e177c244ebbbddc6a266e/rootfs
shm 64M 0 64M 0% /run/containerd/io.containerd.grpc.v1.cri/sandboxes/9a86d1816db9679b3927bde048d4054e6d8780084fe406576622c48d814e4128/shm
overlay 14G 4.8G 8.3G 37% /run/containerd/io.containerd.runtime.v1.linux/k8s.io/9a86d1816db9679b3927bde048d4054e6d8780084fe406576622c48d814e4128/rootfs
контейнерный исполняемый файл и владения сокетами выглядят так:
$ ls -l /usr/local/bin/
total 384020
-rwxr-xr-x 1 2000 2000 38133944 Apr 24 2018 containerd
-rwxr-xr-x 1 2000 2000 3539296 Apr 24 2018 containerd-release
-rwxr-xr-x 1 2000 2000 4185920 Apr 24 2018 containerd-shim
-rwxr-xr-x 1 2000 2000 17395032 Apr 24 2018 containerd-stress
-rwxr-xr-x 1 node node 28466436 Jul 13 12:09 crictl
-rwxr-xr-x 1 2000 2000 20919672 Apr 24 2018 ctr
-rwxrwxr-x 1 node node 55400930 Jul 18 03:13 kubectl
-rwxrwxr-x 1 node node 163031056 Jul 18 03:13 kubelet
-rwxrwxr-x 1 node node 52059570 Jul 18 03:13 kube-proxy
-rwxrwxr-x 1 node node 10087904 Nov 21 10:37 runc
$ sudo ls -l /var/run/containerd
total 0
srw-rw---- 1 root root 0 Dec 23 14:56 containerd.sock
drwxr-xr-x 4 root root 80 Dec 23 15:11 io.containerd.grpc.v1.cri
drwx--x--x 3 root root 60 Dec 23 15:09 io.containerd.runtime.v1.linux
drwx------ 3 root root 60 Dec 23 15:09 runc
Вопрос 1: Я сменил владельца, например, как показано ниже, чтобы иметь возможность извлекать изображения.Каков наилучший способ владения файлами в этом каталоге?
$ sudo chown $(whoami):$(whoami) /var/run/containerd/containerd.sock
$ sudo chown -R $(whoami):$(whoami) /var/run/containerd/io.containerd.grpc.v1.cri
$ sudo chown -R $(whoami):$(whoami) /var/run/containerd/io.containerd.runtime.v1.linux
$ sudo chown -R $(whoami):$(whoami) /var/run/containerd/runc
Вопрос 2. Со временем kubelet не может принимать модули из-за дискового давления.
Failed to admit pod weave-net-94zht_kube-system(45c32573-0848-11e9-a03e-0800277b3732) - node has conditions: [DiskPressure]
В результате я удаляю самые большие из /var/lib/containerd/io.containerd.content.v1.content
.Я уверен, что это не правильный подход.Как я могу убедиться, что containerd удаляет изображения при удалении связанных модулей?
root@node1:/var/lib/containerd# du -H . | sort -nr | head
7998792 .
5924044 ./io.containerd.content.v1.content
5225584 ./io.containerd.content.v1.content/ingest
3619228 ./io.containerd.content.v1.content/ingest/bb03e51f0e1aef32213993dbc9658a8e69d30a74c8528816bd2d1842ee247c7c
2072468 ./io.containerd.snapshotter.v1.overlayfs
2072292 ./io.containerd.snapshotter.v1.overlayfs/snapshots
698456 ./io.containerd.content.v1.content/blobs
698452 ./io.containerd.content.v1.content/blobs/sha256
600768 ./io.containerd.content.v1.content/ingest/f8a0f55edab797342b0ddbdc5b82409eb54c3451f7bc3b9fe7dbbd656ffdf8ae
354008 ./io.containerd.snapshotter.v1.overlayfs/snapshots/89
Вопрос3: Когда я запускаю докер-контейнер, я получаю этот вывод при попытке docker image ls
.Владельцы файлов будут играть роль здесь?Обратите внимание, containerd - это среда выполнения на хост-компьютере.
$ kubectl exec -it dock -c docker -- sh
/workspace # docker container ls
Get http://%2Fvar%2Frun%2Fdocker.sock/v1.37/containers/json: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x00\x00\x00\x04\x00\x00\x00\x00\x00".
* Are you trying to connect to a TLS-enabled daemon without TLS?
Думаю, у меня есть права на mountpaths
...
- name: docker-socket
mountPath: /var/run/docker.sock
...
volumes:
- name: docker-socket
hostPath:
path: /var/run/containerd/containerd.sock
type: Socket
...