Используйте WSL2 в качестве инструмента повышения производительности

Docker
Используйте WSL2 в качестве инструмента повышения производительности

применять кLinuxизWindowsПодсистема (WSL) ДаWindows 10Добавлена ​​функция, которую можно использовать непосредственно вWindowsзапускать наLinuxЗаказ. иWSL 2даWSLНовая версия, поддерживающаяLinuxизWindowsподсистема вWindowsзапускать наELF64 Linuxбинарный файл. Его основная цель — улучшить производительность файловой системы и повысить полную совместимость системных вызовов.WSL 2Использование технологии виртуализации в облегченной служебной виртуальной машине (VM) работает внутриLinuxядро.

включить и настроитьWSL 2

требования к версии win

WSL 2только приWindows 10 18917или выше доступна версия, если версия слишком низкая, вы можете добавитьWindows InsiderОбновитьWindows, мы можемcmdиспользуется вverчтобы проверить текущийwinверсия.

включить虚拟机平台дополнительные компоненты

существуетpowerShellВыполните следующую команду от имени администратора

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

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

Настройка дистрибутива WSL

Если вы хотите установить по умолчаниюWSLРаздача настроена наWSL 2,существуетpowerShellиспользуйте следующую команду в

wsl --set-default-version 2

Если вы хотите установить дистрибутив какWSL2,существуетpowerShellиспользуйте следующую команду в<Distro>Просто перейдите на дистрибутив, который вы хотите настроить, например.Ubuntu-18.04

wsl --set-version <Distro> 2

Подтвердите с помощьюWSLВерсия

wsl -l -v

Загрузить и установитьUbuntu-18.04

существуетWindowsПоиск в магазине приложенийUbuntu-18.04, а затем загрузить, открыть после завершения загрузкиUbuntu-18.04, то сначала будут выполнены некоторые начальные настройки установки, а затем вам будет предложено установить новыйUNIXПосле того, как имя пользователя и пароль установлены, введитеlinuxподсистема. убедиться, что этоWSL 2нам просто нужноpowerShellвходитьwsl -l -v, вывод следующий, здесьVERSIONза2Делегат включенWSL 2

NAME                   STATE           VERSION
* Ubuntu-18.04           Running         2

Ubuntu-18.04Замените внутренние источники

Сначала сделайте резервную копию источника по умолчанию

cp /etc/apt/sources.list /etc/apt/sourses.list.bak

Измените источник по умолчанию на источник Ali, используйтеsudo vim /etc/apt/sources.listКоманда для редактирования, удаления исходного контента и добавления следующей информации Aliyuan

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

После изменения источника используйте следующую команду для его обновления.

sudo apt-get update
sudo apt-get upgade

Конфигурация установкиWindows Terminal

скачатьWindows Terminal

Windows TerminalдаwinЗапущен новый инструмент командной строки, который можно найти и скачать в магазине приложений.После установки интерфейс открывается следующим образом

Windows Terminal

Введение в него не будет здесь расширяться, а как его использовать записывается здесь.Windows TerminalсоединятьWSL 2и установить конфигурациюzsh.

Установитьzsh

# 安装 zsh
sudo apt-get install zsh

# 修改默认的 Shell 为 zsh
chsh -s /bin/zsh

Установитьoh-my-zsh

oh-my-zshдля быстрой настройкиzsh,ВходитьОфициальный сайтилиGithubВы можете понять его основное использование и использование его богатой темы.Для установки вам нужно всего лишь выполнить следующий код.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Установитьzsh-syntax-higlightingПлагин подсветки синтаксиса

# 下载
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

# 移动到 plugins 文件夹中
mv -p zsh-syntax-highlighting $ZSH_CUSTOM/plugins

# 配置环境变量
cd ~
vim .zshrc

#在 plugins 一列中添加 zsh-syntax-highlighting,如下
plugins=(
         git
         zsh-syntax-highlighting
         )

# 在文件末尾添加
source $ZSH_CUSTOM/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

# 配置生效
source ~/.zshrc

Установитьzsh-autosuggestionsПлагин истории синтаксиса

# 下载
git clone https://github.com/zsh-users/zsh-autosuggestions.git

# 移动到 plugins 文件夹中
mv -p zsh-autosuggestions $ZSH_CUSTOM/plugins

# 配置环境变量
cd ~
vim .zshrc

#在 plugins 一列中添加 zsh-autosuggestions,如下
plugins=(
         git
         zsh-syntax-highlighting
         zsh-autosuggestions
         )

# 在文件末尾添加
source $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh

# 配置生效
source ~/.zshrc

После завершения настройки курсор темы по умолчанию отображается ниже.Если вы хотите настроить более богатую тему, вы можете Baidu

默认配置

Установить и настроитьDockerокрестности

существуетWSL 2установкаDocker

удалить старую версию

sudo apt-get remove docker docker-engine docker.io containerd runc

Настроить репозиторий

# 更新 apt 包索引
sudo apt-get update

# 安装软件包以允许 apt 通过 HTTPS 使用存储库
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 设置稳定的存储库
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

УстановитьDockerИздание сообщества (docker-ce)

# 更新 apt 包索引
sudo apt-get update

# 安装最新版本的 Docker 和 containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io
# (*)安装特定版本;<VERSION> 为具体版本,例如 18.09.1
sudo apt-get install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io

запускатьdockerИ настроить загрузку на автоматический запуск

# 启动 docker
systemctl start docker.service
# 设置开机自启
systemctl enable docker.service

если неrootпользователь хочет использоватьdocker, пользователь должен быть добавлен вdockerгруппа пользователей

sudo usermod -aG docker user-name

(*) Удалить докер

# 卸载软件
sudo apt-get purge docker-ce
# 删除 docker 的容器,镜像,卷等存储
sudo rm -rf /var/lib/docker

Загрузить и установитьDocker Desktop WSL 2 backend

WSL 2Вводит значительные архитектурные изменения, как этоMicrosoftполная сборкаLinuxядро, разрешитьLinuxКонтейнеры работают изначально без эмуляции, в то время какDockerОн также был специально разработан для использованияWSL 2серединаDockerменеджер рабочего стола демона, открытьDocker Desktop WSL2 backendстраницу, загрузите последнюю версию программы, после установки откройте программу и выполните следующие настройки.

  • Включить экспериментальную основуWSL 2флажок двигателя (Enable the experimental WSL 2 based engine)

启用基于实验性 WSL2 的引擎复选框

  • (*) незащищенный2375Port, чтобы другие внешние программы также могли управлятьDocker(ОткрытымExpose daemon on tcp://localhost:2375 without TLSпредыдущий флажок)
  • существуетResourcesнабор из которогоWSL 2Доступ в релизеDocker, который используется на следующем рисункеUbuntu-18.04

设置 Docker 访问的发行版

После завершения настройки нажмитеApply & RestartПрименить и перезапуститьDocker Desktop. После полной перезагрузки видимDesktopнижняя левая ногаDockerстатус зеленыйrunningвыражатьDockerБег.

Чтобы узнать, что вы установилиDockerДля получения соответствующей информации о версии мы можем найти ее вAbout Docker DesktopКак показано на рисунке ниже, текущий установленныйDocker EngineВерсия19.03.5,Docker-composeВерсия1.25.1-rc1, поддерживаетсяKubernetesВерсияv1.15.5.

查看 Desktop 版本

Установить и настроитьKubernetesокрестности

ИсправлятьDocker daemonнастроить

докер по умолчаниюCgroup Driverзаcgroup,Но когдаkubernetes1.14Рекомендуется использовать более поздние версииsystemdприйти какDockerизcgroupводить машину. использоватьvim /etc/docker/deamon.jsonКоманда для изменения или создания новой конфигурации. Конкретное содержимое конфигурации см.Официальный представитель Kubernetes.

Кроме того, нам нужно настроитьDockerВнутренний зеркальный источник, ускоренное зеркалоdownloadСкорость обычно используется в зеркальном источнике Али и Университете науки и техники Китая. Вышеупомянутые два шага настройки следующие:

# 编辑 deamon 文件
vim /etc/docker/deamon.json

# 输入如下内容
{
  "registry-mirrors": ["https://6e0d9uoa.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

# 重启 Docker
sudo service docker restart

скачатьKubernetesнеобходимое зеркало

Из-за проблем с сетью, если вы не можете получить доступ к внешней сети,Decker Desktopвыбрать вKubernetesЕго нельзя запустить. К счастью, служба Alibaba Cloud Container Service находится вGithubоткрытый источникDocker Desktop для Mac/Windows позволяет использовать Kubernetesпроект, нам просто нужно скачать его и выполнить скрипт, чтобы получить всеKubernetesВсе необходимые изображения загружаются локально.

#将项目下载到本地
git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop
#进入项目目录
cd k8s-for-docker-desktop

#由于最新 master 已经支持 kubernetes v1.15.5,所以直接执行下载脚本即可
./load_images.sh

После того, как все зеркала загружены, мы используемdocker imagesВы можете увидеть загруженный контейнер

REPOSITORY                                                       TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-apiserver                                        v1.15.5             e534b1952a0d        2 months ago        207MB
k8s.gcr.io/kube-proxy                                            v1.15.5             cbd7f21fec99        2 months ago        82.4MB
k8s.gcr.io/kube-controller-manager                               v1.15.5             1399a72fa1a9        2 months ago        159MB
k8s.gcr.io/kube-scheduler                                        v1.15.5             fab2dded59dd        2 months ago        81.1MB
quay.io/kubernetes-ingress-controller/nginx-ingress-controller   0.26.1              29024c9c6e70        2 months ago        483MB
docker/kube-compose-controller                                   v0.4.23             a8c3d87a58e7        6 months ago        35.3MB
docker/kube-compose-api-server                                   v0.4.23             f3591b2cb223        6 months ago        49.9MB
k8s.gcr.io/coredns                                               1.3.1               eb516548c180        11 months ago       40.3MB
k8s.gcr.io/kubernetes-dashboard-amd64                            v1.10.1             f9aed6605b81        12 months ago       122MB
k8s.gcr.io/etcd                                                  3.3.10              2c4adeb21b4f        12 months ago       258MB
k8s.gcr.io/pause                                                 3.1                 da86e6ba6ca1        24 months ago       742kB

включитьKubernetes

мы вDocker DesktopВыберите Включить в настройкахkubernetes, затем нажмитеApply & Restartперезагружать.

启用 Kubernetes

Если вам повезет, при перезагрузке вы найдетеDesktopнижняя левая ногаDockerиKubernetesстатус стал зеленымrunnning, но очень вероятно, что после перезапускаkubernetesСтатус всегда был желтыйstarting. Не волнуйтесь, если это произойдет, мы можемC:\ProgramData\DockerDesktopвнизservice.txtПроверьте информацию журнала запуска.Как правило, запуск завершается неудачно, и информация журнала, которая появляется чаще всего, является следующим повторяющимся содержимым

[08:57:24.359][ApiProxy          ][Info   ] time="2019-12-20T08:57:24+08:00" msg="cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: EOF"
[08:57:24.359][GoBackendProcess  ][Info   ] time="2019-12-20T08:57:24+08:00" msg="external: POST /events 200 \"Go-http-client/1.1\" \"\""

В этом случае вы можете обратиться кIssue 3769(comment)иIssue 1962(comment), по сути, суммировать следующие операции:

  • Исправлятьhostфайл, будет127.0.0.1 kubernetes.docker.internalКартографическая информация добавлена ​​вhostв файле
  • изменить сетевое соединениеDNSадрес8.8.8.8,winкак изменить сетевое подключениеDNSВы можете самостоятельно использовать Baidu
  • УдалитьC:\ProgramData\DockerDesktopв каталогеpkiфайл каталога
  • УдалитьC:\Users\<yourname>目录下из.kubeфайл каталога
  • закрытиеwinсетевой брандмауэр илиvpnkit.exeДобавлено в правила для входящего и исходящего трафика брандмауэра.
  • существуетDesktopнажмите, чтобы войтиtroubleshoot, щелкните Сбросkubernetesкластер (Reset Kubernetes cluster)

重置 kubernetes 集群

Если вышеуказанная операция по-прежнему не удалась, рекомендуется повторить операцию несколько раз. Если есть другие проблемы, обычно обращайтесь кdocker\for-winПроектissueРешение можно найти ниже. Если запуск прошел успешно, мы можем проверить, выполнив следующую команду в командной строке

$ kubectl cluster-info
Kubernetes master is running at https://kubernetes.docker.internal:6443
KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
$ kubectl get nodes
NAME             STATUS   ROLES    AGE   VERSION
docker-desktop   Ready    master   6h    v1.15.5

развертыватьKubernetes dashboard

Kubernetes dashboardдаKubernetesна основе кластераWebОбщийUI. Он позволяет пользователям управлять приложениями, работающими в кластере, и устранять неполадки, а также управлять самим кластером. Выполните следующую команду для развертывания

# 新建 dashboard 资源
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

# (*)如果上面命令执行说网络连接有问题,把 yaml 文件下载到本地,然后执行
kubectl apply -f kubernetes-dashboard.yaml

# 开启 API Server 访问代理
kubectl proxy

После завершения развертывания мы передаем следующееURLполучить доступKubernetes dashboard

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

ВходитьDashboardЕсли вам нужен токен, вы можете получить его с помощью следующей команды, а затем скопировать и вставить сгенерированный токен в поле ввода токена для входа.

kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}'

Загрузить и установитьHelm

HelmдаDeisОдна разработкаkubernetesменеджер пакетов. каждый пакет называетсяChart,HelmУстановка клиента очень проста, мы можем перейти кGithubЗагрузите последнюю исполняемую программу, распакуйте ее и используйте. Конкретные шаги операции следующие:

# 下载 v2.16.1 版本
wget https://get.helm.sh/helm-v2.16.1-linux-amd64.tar.gz
# 解压
tar -zxvf helm-v2.16.1-linux-amd64.tar.gz
cd linux-amd64/
# 移动到 /usr/local/bin 目录下
cp helm /usr/local/bin/

СерверtillerЕго не так просто установить, потому что зеркало внешней сети нужно скачать. к счастьюDocker HubЕсть зеркальные изображения, упакованные и загруженные другими, нам нужно толькоpullспуститься, ударитьtagЗатем выполняются следующие конкретные шаги:

# 下载镜像到本地
docker pull doublemine/kubernetes-helm.tiller:v2.16.1
# 添加 tag
docker tag doublemine/kubernetes-helm.tiller:v2.16.1 gcr.io/kubernetes-helm/tiller:v2.16.1

После того, как образ сервера загружен локально, мы можем установить его на кластерtiller, мы можем запустить следующие команды, чтобы создать учетную запись службы и инициализировать клиент.

kubectl create serviceaccount tiller -n kube-system
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount kube-system:tiller
helm init --wait --service-account tiller

После завершения установки и инициализации мы хотим проверитьtillerНезависимо от того, запущена ли служба, вы можете использовать следующую команду

$ kubectl get pod --namespace kube-system
NAME                                     READY   STATUS    RESTARTS   AGE
coredns-5c98db65d4-7rn5b                 1/1     Running   0          12h
coredns-5c98db65d4-bx9x2                 1/1     Running   0          12h
etcd-docker-desktop                      1/1     Running   0          12h
kube-apiserver-docker-desktop            1/1     Running   0          12h
kube-controller-manager-docker-desktop   1/1     Running   0          12h
kube-proxy-rdtfm                         1/1     Running   0          12h
kube-scheduler-docker-desktop            1/1     Running   0          12h
kubernetes-dashboard-7d75c474bb-qcbxx    1/1     Running   0          4h46m
tiller-deploy-54f7455d59-fgsnb           1/1     Running   0          12h

Мы видим, что последний столбец показываетtillerСлужба запущена.

Helm настраивает отечественные зеркальные источники

когда мы используемhelmПри установке приложения мы найдемdownloadСкорость очень низкая, и могут быть проблемы с сетью.В этом случае нам нужно настроить зеркальный источник загрузки по умолчанию, чтобы он был домашним. Конкретные этапы настройки следующие:

# 删除默认的镜像源
helm repo remove stable
# 增加新的国内镜像源
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo add incubator http://mirror.azure.cn/kubernetes/charts-incubator/
# 更新仓库
sudo helm repo update

# 测试速度
helm search mysql