Практика устранения неполадок KubeSphere (2)

Kubernetes
Практика устранения неполадок KubeSphere (2)

Продолжение предыдущей статьи"Боевое исключение KubeSphere"В недавнем использовании Kubesphere также записал некоторые проблемы использования, надеясь помочь другим

Восемь проблем загрузки приложений Kubesphere

8.1 Загрузка файла 413

Развернуть приложение в kubesphere.В приложении есть функция загрузки файлов.Проверить последнюю аномальную загрузку, загрузку файла и ошибку ingress413.Kubesphere использует контроллер ingress-nginx, который можно поддерживать, добавляя k-v в аннотацию.

Решение. Примените маршрутизацию, чтобы настроить максимальный размер тела.

Это особенное GitHub.IO/ingress-что я…

8.2 Сервер загрузки больших файлов 504

Ответ 504 серверной части загрузки больших файлов:

proxy read timeoutnginx.ingress.kubernetes.io/proxy-read-timeout

Девять междоменных проблем

kubesphere использует ingress-nginx для поддержки междоменного доступа, вы можете обратиться к следующей ссылке, чтобы добавить ее в аннотацию.

Это особенное GitHub.IO/ingress-что я…

Тестовая среда может использовать хосты для преобразования имени домена в локальное, внешний интерфейс использует nginx для обслуживания статических файлов, а API обратного прокси-сервера можно посмотреть в примере:

server {
  listen 80;
  server_name localhost;
  # 强制https跳转
  # rewrite ^(.*)$ https://$host$1 permanent;
  location / {
    index      index.html;
    root       /smart-frontend;
    try_files $uri $uri/ /index.html;
    client_body_buffer_size 200m;
    charset utf-8;
  }
  location /api {
      proxy_pass http://smart-backend:8080/api;
      proxy_read_timeout 1200;
      client_max_body_size 1024m;
  }
      gzip  on; #开启gzip
      gzip_vary on;
      gzip_min_length 1k; #不压缩临界值,大于1k的才压缩,一般不用改
      gzip_buffers 4 16k;
      gzip_comp_level 6; #压缩级别,数字越大压缩的越好
      gzip_types  text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-icon;
}

10 Добавить узлы

В более поздний период бизнес постепенно подошел, а ресурсов узлов кластера стало недостаточно, был добавлен новый узел узла, а к узлу ceph добавлен диск данных узла узла.

10.1 Добавление узлов в кластер ceph

  • Конфигурация системы

  • Бесплатная настройка ключа

  • конфигурация хостов

  • Установка Docker и перенос на диск данных

  • контрольная группа включена

  • добавлен узел данных ceph

Конфигурация кластера ceph добавляет узел диска данных кластера node03 (если класс хранения данных достаточен, вы можете не добавлять узел данных)

[root@node03 docker]# mkfs.xfs /dev/vdd
[root@node03 docker]# mkdir -p /var/local/osd3
[root@node03 docker]# mount /dev/vdd /var/local/osd3/

添加vdd到/etc/fstab中
[root@node03 docker]# yum -y install yum-plugin-priorities epel-release

[root@node03 yum.repos.d]# chmod 777 -R /var/local/osd3/
[root@node03 yum.repos.d]# chmod 777 -R /var/local/osd3/*  master节点利用ceph-deploy部署node03节点[root@master ceph]# ceph-deploy install node03
[root@master ceph]# ceph-deploy  gatherkeys master
[root@master ceph]# ceph-deploy osd prepare node03:/var/local/osd3
  • Активировать OSD
[root@master ceph]# ceph-deploy osd activate node03:/var/local/osd3
  • Посмотреть статус
[root@master ceph]# ceph-deploy osd list master node01 node02 node03
  • копировать ключ
[root@master ceph]# ceph-deploy admin master node01 node02 node03
  • Установить разрешения на узле node03
[root@node03 yum.repos.d]# chmod +r /etc/ceph/ceph.client.admin.keyring
  • Настройте MDS на мастере
[root@master ceph]# ceph-deploy mds create node01 node02 node03
  • Посмотреть статус
[root@master ceph]# ceph health
[root@master ceph]# ceph - 由于是新增node节点,数据需要平衡回填,此刻查看集群状态[root@master conf]# ceph -s
    cluster 5b9eb8d2-1c12-4f6d-ae9c-85078795794b
     health HEALTH_ERR
            44 pgs backfill_wait
            1 pgs backfilling
            1 pgs inconsistent
            45 pgs stuck unclean
            recovery 1/55692 objects degraded (0.002%)
            recovery 9756/55692 objects misplaced (17.518%)
            2 scrub errors
     monmap e1: 1 mons at {master=172.16.60.2:6789/0}
            election epoch 35, quorum 0 master
     osdmap e2234: 4 osds: 4 up, 4 in; 45 remapped pgs
            flags sortbitwise,require_jewel_osds
      pgmap v5721471: 192 pgs, 2 pools, 104 GB data, 27846 objects
            230 GB used, 1768 GB / 1999 GB avail
            1/55692 objects degraded (0.002%)
            9756/55692 objects misplaced (17.518%)
                 146 active+clean
                  44 active+remapped+wait_backfill
                   1 active+remapped+backfilling
                   1 active+clean+inconsistent
recovery io 50492 kB/s, 13 objects/s
  client io 20315 B/s wr, 0 op/s rd, 5 op/s wr 
  • Последняя проблема, в настоящее время из-за нового узла узла, новый узел данных ceph нуждается в синхронизации данных.
[root@master conf]# ceph -s
    cluster 5b9eb8d2-1c12-4f6d-ae9c-85078795794b
     health HEALTH_ERR
            1 pgs inconsistent
            2 scrub errors
     monmap e1: 1 mons at {master=172.16.60.2:6789/0}
            election epoch 35, quorum 0 master
     osdmap e2324: 4 osds: 4 up, 4 in
            flags sortbitwise,require_jewel_osds
      pgmap v5723479: 192 pgs, 2 pools, 104 GB data, 27848 objects
            229 GB used, 1769 GB / 1999 GB avail
                 191 active+clean
                   1 active+clean+inconsistent
  client io 78305 B/s wr, 0 op/s rd, 18 op/s wr修复[root@master conf]# ceph -s
    cluster 5b9eb8d2-1c12-4f6d-ae9c-85078795794b
     health HEALTH_OK
     monmap e1: 1 mons at {master=172.16.60.2:6789/0}
            election epoch 35, quorum 0 master
     osdmap e2324: 4 osds: 4 up, 4 in
            flags sortbitwise,require_jewel_osds
      pgmap v5724320: 192 pgs, 2 pools, 104 GB data, 27848 objects
            229 GB used, 1769 GB / 1999 GB avail
                 192 active+clean
  client io 227 kB/s wr, 0 op/s rd, 7 op/s wr
# 同步完成
[root@master conf]# ceph health
HEALTH_OK

10.2 Узел Добавить узел

Чтобы упростить добавление узлов, kubesphere предоставляет удобное добавление в один клик.Crybebesphere.com в /docs/v2.1/ в…

Изменить host.ini

master ansible_connection=local  ip=172.16.60.2
node01  ansible_host=172.16.60.3  ip=172.16.60.3 
node02  ansible_host=172.16.60.4  ip=172.16.60.4
node03  ansible_host=172.16.60.5  ip=172.16.60.5
[kube-master]
master           
[kube-node]
master
node01   
node02
node03

Выполните скрипт add-nodes.sh в каталоге «/script». После успешного выполнения сценария расширения вы можете увидеть информацию об узле кластера, включая новый узел.Вы можете выбрать «Инфраструктура» в меню консоли KubeSphere, а затем войти на страницу управления хостом, чтобы просмотреть его, или выполнить команду kubectl get node через инструмент Kubectl для просмотра расширенной емкости Подробная информация об узле кластера.

[root@master scripts]# ./add-nodes.sh

Посмотреть подтверждение

[root@master conf]# kubectl get nodes -owide
NAME     STATUS   ROLES         AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
master   Ready    master        136d   v1.15.5   172.16.60.2   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://18.6.2
node01   Ready    node,worker   136d   v1.15.5   172.16.60.3   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://18.6.2
node02   Ready    node,worker   136d   v1.15.5   172.16.60.4   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://18.6.2
node03   Ready    worker        10m    v1.15.5   172.16.60.5   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://19.3.5
[root@master conf]# kubectl label node  node-role.kubernetes.io/node=
common.yaml            hosts.ini              plugin-qingcloud.yaml  
[root@master conf]# kubectl label node node03  node-role.kubernetes.io/node=   
node/node03 labeled
[root@master conf]# kubectl get nodes -owide                                
NAME     STATUS   ROLES         AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
master   Ready    master        136d   v1.15.5   172.16.60.2   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://18.6.2
node01   Ready    node,worker   136d   v1.15.5   172.16.60.3   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://18.6.2
node02   Ready    node,worker   136d   v1.15.5   172.16.60.4   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://18.6.2
node03   Ready    node,worker   11m    v1.15.5   172.16.60.5   <none>        CentOS Linux 7 (Core)   3.10.0-693.el7.x86_64   docker://19.3.5
[root@master conf]# 

图片描述

Ресурсы кластера одиннадцати K8s неравномерны

Можно обнаружить, что ресурс K8S использует дисбаланс, предыдущее приложение для развертывания предназначено для разработки NodeSelect, что приводит к запуску некоторых системных служб в узле Node, см. Память Node2, что приводит к ненормальным сигналам тревоги или перезапуску кластера.

图片描述

можно посмотреть по

kubectl get pods -o wide --all-namespaces |grep node02 |awk '{print $1,  $2}'

Некоторые системные приложения назначаются главному узлу через nodeselect, чтобы уменьшить нагрузку на память узла node2.

`kubectl  get nodes --show-labels`

Просмотр компонентов системы на узле 2 и добавление селектора узлов для изменения расписания

      nodeSelector:
        node-role.kubernetes.io/master: master

图片描述

Просмотр существующего развертывания системы kubesphere на node2

图片描述

После завершения планирования убедитесь, что загрузка памяти node2 снизилась.

图片描述

Двенадцать devop-проектов kubesphere

Добавлен узел node03. Проект devops находится в очереди на одну неделю, а экземпляр, выполняющий задание, еще не инициализирован. Войдите в кластер для просмотра. Агент.Для скорости прямо на узле node сохраните базовое зеркало, а затем загрузите на node03

图片描述

图片描述

[root@master ~]# kubectl describe pods -n kubesphere-devops-system $(kubectl get pods -n kubesphere-devops-system |grep -E "^base" |awk '{print $1}')

图片描述

Установка приложения Thirteen kubesphere

В настоящее время мой собственный кластер kubesphere 2.1.После добавления репозитория в проект мне все еще нужно вручную запускать зеркальные данные в фоновом режиме, когда я возвращаюсь к этому месту.Я добавил несколько репозиториев helm, кажется, что график внутри не существует.веб интерфейс показывает,что под проектом куда добавляется репо,я создаю новое приложение,а затем выбираю магазин приложений из kubesphere.в нем всего несколько чартов,а чарты добавленного хелма источник не найден.Вы можете использовать команду для поиска внутри сервера. Сообщество консультантов временно получает ответ.Помните, что в фоновом режиме версии v2.0 есть задача по синхронизации графиков.Для текущей версии 2.1 сначала используйте команду helm для ручной установки helm в кластере

[root@master common-service]# helm install -n consul --namespace common-service -f consul/values-production.yaml consul/
NAME:   consul
LAST DEPLOYED: Tue Jan 14 17:56:27 2020
NAMESPACE: common-service
STATUS: DEPLOYED


RESOURCES:
==> v1/Pod(related)
NAME      READY  STATUS   RESTARTS  AGE
consul-0  0/2    Pending  0         0s


==> v1/Service
NAME       TYPE       CLUSTER-IP   EXTERNAL-IP  PORT(S)                                                AGE
consul     ClusterIP  None         <none>       8400/TCP,8301/TCP,8301/UDP,8300/TCP,8600/TCP,8600/UDP  1s
consul-ui  ClusterIP  10.233.59.7  <none>       80/TCP                                                 1s
==> v1/StatefulSet
NAME    READY  AGE
consul  0/3    0s


==> v1beta1/PodDisruptionBudget
NAME        MIN AVAILABLE  MAX UNAVAILABLE  ALLOWED DISRUPTIONS  AGE
consul-pdb  1              N/A              0                    1s


NOTES:
  ** Please be patient while the chart is being deployed **


  Consul can be accessed within the cluster on port 8300 at consul.common-service.svc.cluster.local


In order to access to the Consul Web UI:


    kubectl port-forward --namespace common-service svc/consul-ui 80:80
    echo "Consul URL: http://127.0.0.1:80"


Please take into account that you need to wait until a cluster leader is elected before using the Consul Web UI.


In order to check the status of the cluster you can run the following command:


    kubectl exec -it consul-0 -- consul members


Furthermore, to know which Consul node is the cluster leader run this other command:


    kubectl exec -it consul-0 -- consul operator raf

Для конкретных вопросов, пожалуйста, обратитесь к сообщению:Crybebesphere.com.to/forum/of/669…

Я сам разобрался с конспектами k8s, и те, кто на подъеме, могут быстро учиться и общаться:GitHub.com/RedHat Series/Арвин…Поддержите KubeSphere, местную платформу управления контейнерами, и внесите свой вклад в сообщество.