将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
更换默认源为阿里源, 使用 sudo vim /etc/apt/sources.list
命令编辑,删除原来的内容,添加下面的阿里源信息
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
连接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
配置完成之后,默认的主题光标如下所示,如果想要配置更加丰富的主题,可以自行百度
安装并配置 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
(*)卸载docker
# 卸载软件 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
)
- (*) 暴露
2375
端口,让外部其他程序也能管理docker
(打开expose daemon on tcp://localhost:2375 without tls
前面的复选框) - 在
resources
中设置要从哪个wsl 2
发行版中访问docker
,如下图使用的是ubuntu-18.04
配置完成之后,点击 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
。
安装并配置 kubernetes
环境
修改 docker daemon
配置
docker 默认 cgroup driver
为 cgroup
,但是在 kubernetes1.14
之后的版本推荐使用 systemd
来作为 docker
的 cgroup
驱动 。使使用 vim /etc/docker/deamon.json
命令修改或新建配置,具体配置内容可以参考 kubernetes 官方。
另外我们还需要配置一下 docker
国内的镜像源,加速你的镜像下载速度,一般使用的有阿里和中科大的镜像源。上面的两项配置步骤如下
# 编辑 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
是启动不了的,还好阿里云容器服务在 github
上有开源 docker desktop for 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
重启。
如果运气好的话,当你重启之后你就会发现 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
可以自行百度 - 删除
c:\programdata\dockerdesktop
目录下的pki
目录文件 - 删除
c:\users\<yourname>目录下
的.kube
目录文件 - 关闭
win
的网络防火墙,或者将vpnkit.exe
添加到防火墙出入站规则中。 - 在
desktop
中点击进入troubleshoot
,点击重置kubernetes
集群(reset kubernetes cluster
)
如果上述操作一次下来还是不成功,建议重复操作几次。如果出现了其他的问题,一般到 项目的 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
进入 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
安装应用的时候,我们会发现下载速度特别慢,还有可能会遇到网络的问题,这种情况我们需要配置其默认下载的镜像源为国内。具体配置步骤如下:
# 删除默认的镜像源 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
上一篇: 统计Linux下的CPU状态信息