Прощай, командная строка! Установка K8S дурацкая, графическое управление действительно ароматное!

Java Kubernetes
Прощай, командная строка! Установка K8S дурацкая, графическое управление действительно ароматное!

Адрес фактического центра электронной коммерции SpringBoot (40k+star):GitHub.com/macro-positive/…

Резюме

Раньше мы всегда использовали командную строку для управления K8S, хотя такой подход выглядит круто для программистов, иногда его использование довольно проблематично. Сегодня мы представим инструмент визуального управления K8S Rancher, его использование может значительно снизить нагрузку на наше управление K8S, я надеюсь помочь всем!

Знакомство с Ранчером

Rancher — это платформа управления контейнерами для компаний, использующих контейнеры. Rancher упрощает процесс использования K8S, разработчики могут запускать K8S где угодно, соответствовать спецификациям ИТ-требований и расширять возможности команд DevOps.

Установка докера

Хотя есть несколько способов установить Rancher, использование Docker для установки, несомненно, является самым простым! Друзья, у которых не установлен Docker, могут сначала установить его.

  • Установитьyum-utils:
yum install -y yum-utils device-mapper-persistent-data lvm2
  • Добавьте расположение репозитория docker для источника yum:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • Установите Докер:
yum install docker-ce
  • Запустите Докер:
systemctl start docker

Установка RANCHER

После установки Docker мы можем приступить к установке Rancher. В Rancher уже встроен K8S, поэтому дополнительная установка не требуется. Точно так же, как мы установили Minikube, K8S собирается напрямую.

  • Сначала загрузите образ Rancher;
docker pull rancher/rancher:v2.5-head
  • Запустите контейнер Rancher после завершения загрузки. Rancher работает немного медленно и нужно подождать несколько минут:
docker run -p 80:80 -p 443:443 --name rancher \
--privileged \
--restart=unless-stopped \
-d rancher/rancher:v2.5-head
  • После завершения операции вы можете получить доступ к домашней странице Rancher.В первый раз вам необходимо установить пароль учетной записи администратора.Адрес доступа:https://192.168.5.46

  • Настроить ранчоServer URL, адрес, к которому могут получить доступ другие узлы, если мы хотим установить другие узлы, нам нужно использовать его;

Rancher использует

Начнем с простого использования Rancher.

  • На главной странице мы можем напрямую просмотреть все кластеры.В настоящее время у нас есть только кластеры с установленным Rancher;

  • Щелкните имя кластера, чтобы просмотреть информацию о состоянии кластера, или нажмите кнопку в правом верхнем углу, чтобы выполнитьkubectlЗаказ;

  • Нажмите кнопку «Панель мониторинга», мы можем просмотреть панель мониторинга кластера, содержимое, которое можно просмотреть здесь, намного богаче, и можно просмотреть информацию о развертывании, службе и поде.

Ранчер в действии

Прежде чем мы использовали командную строку для управления K8S, на этот раз мы пытаемся использовать графический интерфейс. Или развернуть приложение SpringBoot в качестве примера, но прийти к развертыванию MySQL.

Развертывание MySQL

  • Сначала мы используемyamlСоздайте развертывание в виде рабочего пути какDeployments->创建->以YAML文件编辑;

  • развертыванияyamlСодержание выглядит следующим образом, обратите внимание на добавлениеnamespace: defaultЭта линия, в противном случае она не сможет создавать;
apiVersion: apps/v1
kind: Deployment
metadata:
  # 指定Deployment的名称
  name: mysql-deployment
  # 指定Deployment的空间
  namespace: default
  # 指定Deployment的标签 
  labels:
    app: mysql
spec:
  # 指定创建的Pod副本数量 
  replicas: 1
  # 定义如何查找要管理的Pod
  selector:
    # 管理标签app为mysql的Pod
    matchLabels:
      app: mysql
  # 指定创建Pod的模板
  template:
    metadata:
      # 给Pod打上app:mysql标签
      labels:
        app: mysql
    # Pod的模板规约
    spec:
      containers:
        - name: mysql
          # 指定容器镜像
          image: mysql:5.7
          # 指定开放的端口
          ports:
            - containerPort: 3306
          # 设置环境变量
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: root
          # 使用存储卷
          volumeMounts:
            # 将存储卷挂载到容器内部路径
            - mountPath: /var/log/mysql
              name: log-volume
            - mountPath: /var/lib/mysql
              name: data-volume
            - mountPath: /etc/mysql
              name: conf-volume
      # 定义存储卷
      volumes:
        - name: log-volume
          # hostPath类型存储卷在宿主机上的路径
          hostPath:
            path: /home/docker/mydata/mysql/log
            # 当目录不存在时创建
            type: DirectoryOrCreate
        - name: data-volume
          hostPath:
            path: /home/docker/mydata/mysql/data
            type: DirectoryOrCreate
        - name: conf-volume
          hostPath:
            path: /home/docker/mydata/mysql/conf
            type: DirectoryOrCreate
  • На самом деле, мы также можем настроить атрибут развертывания через страницу, если выyamlКонфигурация не очень знакома, вы можете изменить свойства на странице и сравнить, напримерhostPath.typeЭто свойство, вы можете увидеть, что это такое с первого взгляда;

  • позже сyamlСоздайте службу в форме , и путь операцииServices->创建->节点端口->以YAML文件编辑;

  • УслугаyamlСодержание следующее,namespaceатрибут не может быть меньше;
apiVersion: v1
kind: Service
metadata:
  # 定义空间
  namespace: default
  # 定义服务名称,其他Pod可以通过服务名称作为域名进行访问
  name: mysql-service
spec:
  # 指定服务类型,通过Node上的静态端口暴露服务
  type: NodePort
  # 管理标签app为mysql的Pod
  selector:
    app: mysql
  ports:
    - name: http
      protocol: TCP
      port: 3306
      targetPort: 3306
      # Node上的静态端口
      nodePort: 30306
  • После завершения развертывания необходимо создать новыйmallбазу данных и импортировать связанные таблицы, адрес таблицы:GitHub.com/macro-positive/…

  • Вот относительно простой способ импортировать базу данных, создать соединение через Navicat и сначала настроить канал SSH;

  • Затем получите IP-адрес, на котором запущен контейнер Rancher (в Minikube мы используем адрес Minikube);
[root@linux-local ~]# docker inspect rancher |grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",
  • После этого мы можем получить доступ к базе данных в Rancher так же, как к базе данных на сервере Linux, просто напрямую добавим IP-адрес Rancher и порт базы данных.

Разверните приложение SpringBoot

  • отyamlСоздайте развертывание приложения SpringBoot в виде рабочего пути какDeployments->创建->以YAML文件编辑, информация о конфигурации выглядит следующим образом;
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: default
  name: mall-tiny-fabric-deployment
  labels:
    app: mall-tiny-fabric
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mall-tiny-fabric
  template:
    metadata:
      labels:
        app: mall-tiny-fabric
    spec:
      containers:
        - name: mall-tiny-fabric
          # 指定Docker Hub中的镜像地址
          image: macrodocker/mall-tiny-fabric:0.0.1-SNAPSHOT
          ports:
            - containerPort: 8080
          env:
            # 指定数据库连接地址
            - name: spring.datasource.url
              value: jdbc:mysql://mysql-service:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
            # 指定日志文件路径
            - name: logging.path
              value: /var/logs
          volumeMounts:
            - mountPath: /var/logs
              name: log-volume
      volumes:
        - name: log-volume
          hostPath:
            path: /home/docker/mydata/app/mall-tiny-fabric/logs
            type: DirectoryOrCreate
  • отyamlСоздайте службу в форме , и путь операцииServices->创建->节点端口->以YAML文件编辑, информация о конфигурации выглядит следующим образом;
apiVersion: v1
kind: Service
metadata:
  namespace: default
  name: mall-tiny-fabric-service
spec:
  type: NodePort
  selector:
    app: mall-tiny-fabric
  ports:
    - name: http
      protocol: TCP
      port: 8080
      targetPort: 8080
      # Node上的静态端口
      nodePort: 30180
  • После успешного создания на вкладке Deployments мы можем обнаружить, что экземпляр готов.

приложение для внешнего доступа

По-прежнему используйте обратный прокси-сервер Nginx для доступа к приложениям SpringBoot.

  • Поскольку служба Rancher уже занята80Порт, служба Nginx может только снова изменить порт, который работает здесь в2080в порту;
docker run -p 2080:2080 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
  • Добавьте файл конфигурации после создания контейнера NGINX.mall-tiny-rancher.conf,будетmall-tiny.macrozheng.comОбратный прокси-сервер доступа доменного имени к приложению SpringBoot в K8S;
server {
    listen       2080;
    server_name  mall-tiny.macrozheng.com; #修改域名

    location / {
        proxy_set_header Host $host:$server_port;
        proxy_pass   http://172.17.0.3:30180; #修改为代理服务地址
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}
  • Затем измените локальный файл хоста для доступа к серверу Linux и добавьте следующие записи;
192.168.5.46 mall-tiny.macrozheng.com

Суммировать

Использовать Rancher для визуального управления K8S очень просто, что значительно снижает сложность развертывания и управления K8S. Команда Docker может завершить развертывание, а визуальный интерфейс может просматривать различные состояния запущенного приложения. Скрипт K8S прост в исполнении, и это можно сделать в настройках графического интерфейса, которые не пишут скрипты. Подводя итог: это вкусно!

использованная литература

Официальная документация Rancher:docs.rancher.cn/rancher2/

Адрес исходного кода проекта

GitHub.com/macro-positive/…

Эта статьяGitHubGitHub.com/macro-positive/…Он был записан, приветствую всех на Star!