Следующие две статьи:
После использования kubesphere я также зафиксировал некоторые проблемы с использованием, я надеюсь, что это может быть полезно для других, и испытать шелковисто-гладкую платформу управления контейнерами.
14. Ненормальное удаление контейнера
Я использовал helm для развертывания консула раньше и удалял консула позже
[root@master ~]# helm delete consul --purge
После проверки статуса пода в консуле всегда былоTerminating
[root@master ~]# kubectl get pods -n common-service
NAME READY STATUS RESTARTS AGE
consul-1 1/2 Terminating 1 24d
redis-master-0 1/1 Running 1 17d
redis-slave-0 1/1 Running 1 8d
redis-slave-1 1/1 Running 1 17d
Посмотреть статус
[root@master ~]# kubectl describe pods consul-1 -n common-service
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedSync 3m41s (x4861 over 22h) kubelet, node02 error determining status: rpc error: code = DeadlineExceeded desc = context deadline exceeded
Предложение по утилизации:
- Обновите докер до версии 18. В этой версии используется новый containerd и исправлено множество ошибок.
- Если есть завершающее состояние, вы можете предоставить экспертам контейнера для расследования.Не рекомендуется принудительно удалять его, так как это может вызвать некоторые проблемы в бизнесе.
Предполагается, что это ошибка в версии 17 dockerd. доступныйkubectl -n cn-staging delete pod apigateway-6dc48bf8b6-clcwk --force --grace-period=0
принудительно удалить модуль, ноdocker ps
все еще вижу контейнер
[root@master ~]# kubectl -n common-service delete pod consul-1 --force --grace-period=0
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "consul-1" force deleted
[root@master ~]# kubectl get pods -n common-service
NAME READY STATUS RESTARTS AGE
redis-master-0 1/1 Running 1 17d
redis-slave-0 1/1 Running 1 8d
redis-slave-1 1/1 Running 1 17d
Посмотреть на узле2
[root@node02 ~]# docker ps -a |grep consul
b5ea9ace7779 fc6c0a74553d "/entrypoint.sh /run…" 3 weeks ago Up 3 weeks k8s_consul_consul-1_common-service_5eb39c90-8503-4125-a2f0-63f177e36293_1
13192855eb6f mirrorgooglecontainers/pause-amd64:3.1 "/pause" 3 weeks ago Exited (0) 23 hours ago k8s_POD_consul-1_common-service_5eb39c90-8503-4125-a2f0-63f177e36293_0
Используйте удобное состояние ресурса для выпуска, если оно существует в метаданных финализаторов, ресурсы k8sfinalizers
, то ресурс вообще создается программой, а в метаданных ресурса создаетfinalizers
Добавляется идентификатор, а это значит, что при удалении ресурса программа, создавшая ресурс, перед удалением должна произвести очистку, после очистки ей необходимо удалить идентификатор из ресурса.finalizers
, и только тогда ресурс будет окончательно полностью удален. Например, некоторые ресурсы, созданные Rancher, будут записаныfinalizers
логотип.
Предложение по обработке:kubectl edit
Вручную отредактируйте определение ресурса и удалите его.finalizers
, затем снова посмотрите на ресурс, вы обнаружите, что он был удален.
Устранение неполадок пятнадцати исключений журнала k8s
После обновления от V2.0 до V2.1, после проверки Kubesphere, нет журнала
Сначала исключите, являются ли соответствующие модули, отвечающие за сбор журналов, нормальными, Fluent Bit + ElasticSearch
[root@master ~]# kubectl get po -n kubesphere-logging-system
NAME READY STATUS RESTARTS AGE
elasticsearch-logging-curator-elasticsearch-curator-158086m9zv5 0/1 Completed 0 2d13h
elasticsearch-logging-curator-elasticsearch-curator-158095fmdlz 0/1 Completed 0 37h
elasticsearch-logging-curator-elasticsearch-curator-158103bwf8f 0/1 Completed 0 13h
elasticsearch-logging-data-0 1/1 Running 1 8d
elasticsearch-logging-data-1 1/1 Running 774 69d
elasticsearch-logging-discovery-0 1/1 Running 478 56d
elasticsearch-logging-kibana-94594c5f-q7sht 1/1 Running 1 22d
fluent-bit-2b9kj 2/2 Running 2 23h
fluent-bit-bf52m 2/2 Running 2 23h
fluent-bit-pkb9f 2/2 Running 2 22h
fluent-bit-twd98 2/2 Running 2 23h
logging-fluentbit-operator-56c6b84b94-4nzzn 1/1 Running 1 23h
logsidecar-injector-5cbf7bd868-cr2kh 1/1 Running 1 11d
logsidecar-injector-5cbf7bd868-mp46g 1/1 Running 1 22d
Зная, что логи раньше хранились через es, сопоставьте сервис kubesphere-logging-system с режимом NodePort, проверьте индекс и обнаружите, что только jaeger
curl elasticsearch-logging-data.kubesphere-logging-system.svc:9200/_cat/indices
После проверки индекс в норме
Просмотр битовых журналов Fluent
[root@master ~]# kubectl -n kubesphere-logging-system logs -f fluent-bit-2b9kj -c fluent-bit
I0207 13:53:25.667667 1 fluentbitdaemon.go:135] Start Fluent-Bit daemon...
Fluent Bit v1.0.5
Copyright (C) Treasure Data
[2020/02/07 13:53:26] [ info] [storage] initializing...
[2020/02/07 13:53:26] [ info] [storage] in-memory
[2020/02/07 13:53:26] [ info] [storage] normal synchronization mode, checksum disabled
[2020/02/07 13:53:26] [ info] [engine] started (pid=15)
[2020/02/07 13:53:26] [ info] [filter_kube] https=1 host=kubernetes.default.svc port=443
[2020/02/07 13:53:26] [ info] [filter_kube] local POD info OK
[2020/02/07 13:53:26] [ info] [filter_kube] testing connectivity with API server...
[2020/02/07 13:53:36] [ warn] net_tcp_fd_connect: getaddrinfo(host='kubernetes.default.svc'): Name or service not known
[2020/02/07 13:53:36] [error] [filter_kube] upstream connection error
[2020/02/07 13:53:36] [ warn] [filter_kube] could not get meta for POD fluent-bit-2b9kj
Раньше из-за системного диска данные контейнера докера переносились на диск данных, из-за формы ссылки сбор логов был ненормальным.
Шаг 1. Добавьте containerLogMountedPath в программу установки ConfigMap ks. Конкретный путь заполняется в соответствии с фактической средой
[root@master docker]# docker info -f '{{.DockerRootDir}}'
/data/docker
[root@master docker]# ll /var/lib/docker
lrwxrwxrwx. 1 root root 12 Oct 10 19:01 /var/lib/docker -> /data/docker
Шаг 2. Подождите, пока установщик автоматически обновит ConfigMap оператора fluent-bit, около нескольких минут. Пока containerLogMountedPath не будет обновлен до ConfigMap (старайтесь не изменять этот ConfigMap напрямую, чтобы не повлиять на будущие обновления).
Шаг 3. Перезапустите Fluent Bit
# 删除 fluent-bit Daemonset
[root@master ~]# kubectl scale -n kubesphere-logging-system deployment logging-fluentbit-operator --replicas=0
deployment.extensions/logging-fluentbit-operator scaled
[root@master ~]# kubectl delete -n kubesphere-logging-system daemonsets fluent-bit
daemonset.extensions "fluent-bit" deleted
# 重启 Fluent-bit Operator Deployment
[root@master ~]# kubectl scale -n kubesphere-logging-system deployment logging-fluentbit-operator --replicas=1
deployment.extensions/logging-fluentbit-operator scaled
# 检查 fluent-bit 是否起来
[root@master ~]# kubectl get po -n kubesphere-logging-system
NAME READY STATUS RESTARTS AGE
elasticsearch-logging-curator-elasticsearch-curator-158086m9zv5 0/1 Completed 0 2d13h
elasticsearch-logging-curator-elasticsearch-curator-158095fmdlz 0/1 Completed 0 37h
elasticsearch-logging-curator-elasticsearch-curator-158103bwf8f 0/1 Completed 0 13h
elasticsearch-logging-data-0 1/1 Running 1 8d
elasticsearch-logging-data-1 1/1 Running 774 69d
elasticsearch-logging-discovery-0 1/1 Running 478 56d
elasticsearch-logging-kibana-94594c5f-q7sht 1/1 Running 1 22d
fluent-bit-5rzpv 0/2 ContainerCreating 0 3s
fluent-bit-nkzdv 0/2 ContainerCreating 0 3s
fluent-bit-pwhw7 0/2 ContainerCreating 0 3s
fluent-bit-w5t8k 0/2 ContainerCreating 0 3s
logging-fluentbit-operator-56c6b84b94-d7vgn 1/1 Running 0 5s
logsidecar-injector-5cbf7bd868-cr2kh 1/1 Running 1 11d
logsidecar-injector-5cbf7bd868-mp46g 1/1 Running 1 22d
Когда флюс-бит всех нод запущен, можно проверить, что лог восстановился
Ссылаться на:GitHub.com/плачущий шар/…
Ссылаться на:GitHub.com/плачущий шар/…
Хранилище 16 k8s
Есть модули, работающие ненормально, проверьте событие как исключение хранилища, проверьте статус ceph как исключение
[root@master test]# ceph -s
cluster 774df8bf-d591-4824-949c-b53826d1b24a
health HEALTH_WARN
mon.master low disk space
monmap e1: 1 mons at {master=10.234.2.204:6789/0}
election epoch 14, quorum 0 master
osdmap e3064: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v9076023: 192 pgs, 2 pools, 26341 MB data, 8231 objects
64888 MB used, 127 GB / 190 GB avail
192 active+clean
client io 17245 B/s wr, 0 op/s rd, 4 op/s wr
В kubelet по умолчанию стоит gc, а здесь вручную почистить файл докера
# 查看文件
[root@master overlay2]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 34 12 8.463GB 5.225GB (61%)
Containers 46 21 836.6kB 836.5kB (99%)
Local Volumes 4 0 59.03MB 59.03MB (100%)
Build Cache 0 0 0B
# 清理文件
[root@master overlay2]# docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N] y
Семнадцать Изменить режим kube-proxy с iptables на ipvs
- modeprobe между каждым узлом
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
yum install -y ipset ipvsadm
kubectl get configmap kube-proxy -n kube-system -oyaml
Просмотр текущего ipvsadm без правил
[root@master ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
- Измените режим ipvs в configmap kube-proxy на ipvs на главном узле.
Удалить предыдущий модуль kube-proxy
[root@master ~]# kubectl get pod -n kube-system|grep kube-proxy|awk '{print "kubectl delete po "$1" -n kube-system"}'|sh
pod "kube-proxy-2wnst" deleted
pod "kube-proxy-bfrk9" deleted
pod "kube-proxy-kvslw" deleted
Проверьте через ipvsadm, что он был переключен.
18 Установка приложения
В Практике устранения неполадок 2 я записал использование терминала для установки приложений, в kubesphere 2.1 я могу использовать веб-интерфейс для установки приложений в хранилище приложений, добавленных комментариями в пространстве предприятия, и снова записывать шаги операции.
- Добавьте репозиторий в репозиторий приложений в корпоративном пространстве.
- Выбор установки приложения в конкретном проекте происходит из шаблона приложения
- Выберите источник репо и найдите нужный пакет графиков.
Девятнадцать Служб
Благодаря KubeSphere наши собственные приложения получают широкие возможности управления сервисами, а режим sidercar istio используется для внедрения envoy для достижения серии канареечных выпусков, балансировки нагрузки, обнаружения и контроля трафика, ограничения тока, предохранителей и понижения сервисных сетей. В настоящее время я протестировал управление микросервисами в своем собственном приложении, и мне кажется, что им очень легко пользоваться. Позже у меня будет возможность записать процесс.
Я сам разобрался с конспектами k8s, и те, кто на подъеме, могут быстро учиться и общаться:GitHub.com/RedHat Series/Арвин…Поддержите KubeSphere, местную платформу управления контейнерами, и внесите свой вклад в сообщество.