<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>http://lernfunk.de/media/654321</id>
  <title>double12gzh - Posts tagged wsl</title>
  <updated>2020-11-08T14:12:00.108921+00:00</updated>
  <link href="double12gzhblogs.readthedocs.io"/>
  <link href="double12gzhblogs.readthedocs.io/blogs/tag/wsl/atom.xml"/>
  <generator uri="https://ablog.readthedocs.org" version="0.10.9">ABlog</generator>
  <entry>
    <id>double12gzhblogs.readthedocs.io/blogs/Kubernetes/2020-09-27-WSL-Docker-Kubernetes-on-the-Windows-Desktop.html</id>
    <title>在windows上通过wsl来部署k8s</title>
    <updated>2020-09-27T00:00:00+00:00</updated>
    <author>
      <name>大海星</name>
    </author>
    <content type="html">&lt;div class="section" id="windowswslk8s"&gt;

&lt;p&gt;摘要：是Windows10和WSL2的新手，还是Docker和Kubernetes的新手？欢迎来到这篇博文，我们将在Docker KinD和Minikube中从头开始安装Kubernetes。&lt;/p&gt;
&lt;div class="section" id="id1"&gt;
&lt;h2&gt;1. 写在前面&lt;/h2&gt;
&lt;p&gt;为什么要在windows上使用kubernetes?&lt;/p&gt;
&lt;p&gt;在过去的几年里，Kubernetes成为了在分布式环境中运行容器化服务和应用的事实标准平台。虽然存在各种各样的发行版和安装程序来部署Kubernetes在云环境（公共的、私有的或混合的），或在裸机环境中，但仍然需要在本地部署和运行Kubernetes，例如，在开发者的工作站上。&lt;/p&gt;
&lt;p&gt;Kubernetes最初被设计为在Linux环境中部署和使用。然而，有不少用户（不仅是应用开发者）使用Windows操作系统作为日常工具。当微软揭示了WSL–Windows Subsystem for Linux时，Windows和Linux环境之间的界限变得更加不明显。&lt;/p&gt;
&lt;p&gt;同时，WSL还带来了在Windows上几乎无缝运行Kubernetes的能力!&lt;/p&gt;
&lt;p&gt;下面，我们将简要介绍如何安装和使用各种解决方案在本地运行Kubernetes。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="id2"&gt;
&lt;h2&gt;2. 前提条件&lt;/h2&gt;
&lt;p&gt;尽管我们将会安装&lt;a class="reference external" href="https://kind.sigs.k8s.io/"&gt;Kind&lt;/a&gt;，但是，讲解太多关于如何安装的细节，如果您对这个比较关注，请关注我后续的文章。&lt;/p&gt;
&lt;p&gt;首先，我们先看一下我们继续进行下面的操作前，我们的最小的软件版本的需求:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;OS：Win10 version 2004, build 19041。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WSL2开启。安装完成后，可以使用&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;wsl.exe&lt;/span&gt; &lt;span class="pre"&gt;--set-default-version&lt;/span&gt; &lt;span class="pre"&gt;2&lt;/span&gt;&lt;/code&gt;设置使用WSL2。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WSL2可以通过win应用商店来安装，这里使用的是Ubuntu 18.04。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://hub.docker.com/editions/community/docker-ce-desktop-windows"&gt;Docker-desktop-for-windows&lt;/a&gt;。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;(可选)Microsoft Terminal。可以从windows应用商店进行安装。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/0.png" /&gt;
&lt;/div&gt;
&lt;div class="admonition tip"&gt;
&lt;p class="admonition-title"&gt;Tip&lt;/p&gt;
&lt;dl class="simple"&gt;
&lt;dt&gt;如何查看win10的版本信息？&lt;/dt&gt;&lt;dd&gt;&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;win+R&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;输入winver&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="wsl2"&gt;
&lt;h2&gt;3. WSL2：首次接触&lt;/h2&gt;
&lt;p&gt;上面的软件都安装完成后，我们就可以从&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;开始-&amp;gt;Ubuntu&lt;/span&gt;&lt;/code&gt;来打开wsl2了。&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/1.png" /&gt;
&lt;/div&gt;
&lt;p&gt;打开后，你完全可以把它看成是一个正常的Linux的发行，同样的，你也可以在里面设置用户等。&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/2.png" /&gt;
&lt;/div&gt;
&lt;div class="section" id="sudoers"&gt;
&lt;h3&gt;3.1 (可选)设置``sudoers``&lt;/h3&gt;
&lt;p&gt;由于我们是在本地计算机上工作，通常情况下，更新sudoers，并将%sudo组设置为无密码组，可能会更好。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# 用visudo打开sudoer文件&lt;/span&gt;
sudo visudo

&lt;span class="c1"&gt;# 设置sudo group免密登陆&lt;/span&gt;
%sudo   &lt;span class="nv"&gt;ALL&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;ALL:ALL&lt;span class="o"&gt;)&lt;/span&gt; NOPASSWD: ALL

&lt;span class="c1"&gt;# 按 CTRL+X 退出&lt;/span&gt;
&lt;span class="c1"&gt;# 按 Y 保存&lt;/span&gt;
&lt;span class="c1"&gt;# 按 Enter 确认&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/3.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="ubuntu"&gt;
&lt;h3&gt;3.2 更新Ubuntu&lt;/h3&gt;
&lt;p&gt;在进行后面的操作前，我们先升级一下我们的系统。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# 更新apt-get源&lt;/span&gt;
sudo apt update
&lt;span class="c1"&gt;# 基于最新的源更新系统。automatically&lt;/span&gt;
sudo apt upgrade -y
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/4.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="docker-desktop"&gt;
&lt;h2&gt;4. Docker Desktop&lt;/h2&gt;
&lt;p&gt;Docker-Windows-Desktop与WSL2更配哦。&lt;/p&gt;
&lt;p&gt;在我们进入设置之前，让我们做一个小测试，它将显示出与Docker Desktop的新集成是多么的酷。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# 看一下docker的版本及docker是否被安装&lt;/span&gt;
docker version
&lt;span class="c1"&gt;# 看一下kubectl的版本及kubectl是否被安装&lt;/span&gt;
kubectl version
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/5.png" /&gt;
&lt;/div&gt;
&lt;p&gt;你有遇到错误吗？有错误就对了，所以现在让我们继续进行设置。&lt;/p&gt;
&lt;div class="section" id="docker-desktop-wsl2"&gt;
&lt;h3&gt;4.1 设置docker desktop：开启对WSL2的支持&lt;/h3&gt;
&lt;p&gt;如果还没有打开Docker-For-Windows的话，首先我们来启动它。打开Windows的开始菜单，输入”docker”，点击名称启动应用程序。&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/6.png" /&gt;
&lt;/div&gt;
&lt;p&gt;现在在你的任务栏中就能看到它的图标了。&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/7.png" /&gt;
&lt;/div&gt;
&lt;p&gt;下面我们在docker-for-windows的中设置一下，让他使用wsl2:&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/8.png" /&gt;
&lt;/div&gt;
&lt;p&gt;这个选项默认情况下并没有开启:&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/9.png" /&gt;
&lt;/div&gt;
&lt;p&gt;这个功能在幕后所做的就是在WSL2中创建了两个新的发行版，包含并运行所有需要的后端socket、守护进程以及CLI工具（如：docker和kubectl命令）。&lt;/p&gt;
&lt;p&gt;但是，第一种设置仍然不足以在我们的发行版中运行命令。如果我们尝试，我们会遇到和之前一样的错误。&lt;/p&gt;
&lt;p&gt;为了解决这个问题，并最终能够使用这些命令，我们需要告诉Docker桌面也要”附加 “到我们的发行版上。&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/10.png" /&gt;
&lt;/div&gt;
&lt;p&gt;接下来，我们再看一下命令是否正常了呢：&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# 看一下docker的版本及docker是否被安装&lt;/span&gt;
docker version
&lt;span class="c1"&gt;# 看一下kubectl的版本及kubectl是否被安装&lt;/span&gt;
kubectl version
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/11.png" /&gt;
&lt;/div&gt;
&lt;div class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: ERROR/3 (&lt;span class="docutils literal"&gt;/home/docs/checkouts/readthedocs.org/user_builds/gzh/checkouts/latest/blogs/Kubernetes/2020-09-27-WSL-Docker-Kubernetes-on-the-Windows-Desktop.rst&lt;/span&gt;, line 155)&lt;/p&gt;
&lt;p&gt;Figure caption must be a paragraph or empty comment.&lt;/p&gt;
&lt;div class="highlight-default notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;.. figure:: https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/11.png
   :alt:

    说明:

    -  如果没有发生任何事情，重启Docker
       Desktop并在Powershell中重启WSL进程。重启服务LxssManager并启动一个新的Ubuntu会话。
    -  如果您的docker-desktop-for-win中没有\ ``Use the WSL2 based engine``\ 的，请重新安装它的\ ``edge``\ 版本。
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="kind-k8s"&gt;
&lt;h2&gt;5. Kind: 让k8s方便的运行在容器中&lt;/h2&gt;
&lt;p&gt;现在，我们的Docker已经安装好了，配置好了，上次的测试也很正常。&lt;/p&gt;
&lt;p&gt;但是，如果我们仔细观察kubectl命令，它找到了”客户端版本”（1.15.5），但它没有找到任何服务器。&lt;/p&gt;
&lt;p&gt;这很正常，因为我们没有启用Docker Kubernetes集群。所以让我们安装KinD并创建我们的第一个集群。&lt;/p&gt;
&lt;p&gt;我们将按照KinD官方网站上的&lt;a class="reference external" href="https://kind.sigs.k8s.io/docs/user/quick-start/"&gt;教程（部分）&lt;/a&gt;进行操作。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# 下载 KinD&lt;/span&gt;
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-&lt;span class="k"&gt;$(&lt;/span&gt;uname&lt;span class="k"&gt;)&lt;/span&gt;-amd64
&lt;span class="c1"&gt;# 增加可执行权限&lt;/span&gt;
chmod +x ./kind
&lt;span class="c1"&gt;# 移动到系统PATH中&lt;/span&gt;
sudo mv ./kind /usr/local/bin/
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/12.png" /&gt;
&lt;/div&gt;
&lt;div class="section" id="id3"&gt;
&lt;h3&gt;5.1 创建单节点的集群&lt;/h3&gt;
&lt;p&gt;下面，我们将会创建我们的第一个集群：&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# 检查 KUBECONFIG 是否存在&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$KUBECONFIG&lt;/span&gt;
&lt;span class="c1"&gt;# Check if the .kube directory is created &amp;gt; if not, no need to create it&lt;/span&gt;
ls &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube
&lt;span class="c1"&gt;# Create the cluster and give it a name (optional)&lt;/span&gt;
kind create cluster --name wslkind
&lt;span class="c1"&gt;# Check if the .kube has been created and populated with files&lt;/span&gt;
ls &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/13.png" /&gt;
&lt;/div&gt;
&lt;div class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: ERROR/3 (&lt;span class="docutils literal"&gt;/home/docs/checkouts/readthedocs.org/user_builds/gzh/checkouts/latest/blogs/Kubernetes/2020-09-27-WSL-Docker-Kubernetes-on-the-Windows-Desktop.rst&lt;/span&gt;, line 203)&lt;/p&gt;
&lt;p&gt;Figure caption must be a paragraph or empty comment.&lt;/p&gt;
&lt;div class="highlight-default notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;.. figure:: https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/13.png
   :alt:

    说明：对于执行的每一步，都会有一个小图标与之显示。
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;运行完上面的命令后，k8s集群就已经创建好了，因为我们使用是docker desktop，所以，里面的网络默认使用的是&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;as&lt;/span&gt; &lt;span class="pre"&gt;is&lt;/span&gt;&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;我们可以在浏览器中打开&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;kubernetes&lt;/span&gt; &lt;span class="pre"&gt;master&lt;/span&gt;&lt;/code&gt;的页面：&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/14.png" /&gt;
&lt;/div&gt;
&lt;p&gt;而这才是Docker Desktop for Windows与WSL2后台的真正优势。Docker真的做了一个惊人的整合。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="id4"&gt;
&lt;h3&gt;5.2 创建多节点的集群&lt;/h3&gt;
&lt;p&gt;上一节中，我们刚创建的那是一个单节点的集群。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Check how many nodes it created&lt;/span&gt;
kubectl get nodes
&lt;span class="c1"&gt;# Check the services for the whole cluster&lt;/span&gt;
kubectl get all --all-namespaces
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/15.png" /&gt;
&lt;/div&gt;
&lt;p&gt;虽然那也已经能满足大多数人的需求了，但是，下面我们还是来继续看一下它另外一个更加酷炫的能力：创建多节点的集群。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Delete the existing cluster&lt;/span&gt;
kind delete cluster --name wslkind
&lt;span class="c1"&gt;# Create a config file for a 3 nodes cluster&lt;/span&gt;
cat &lt;span class="s"&gt;&amp;lt;&amp;lt; EOF &amp;gt; kind-3nodes.yaml&lt;/span&gt;
&lt;span class="s"&gt;kind: Cluster&lt;/span&gt;
&lt;span class="s"&gt;apiVersion: kind.x-k8s.io/v1alpha4&lt;/span&gt;
&lt;span class="s"&gt;nodes:&lt;/span&gt;
&lt;span class="s"&gt;  - role: control-plane&lt;/span&gt;
&lt;span class="s"&gt;  - role: worker&lt;/span&gt;
&lt;span class="s"&gt;  - role: worker&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;span class="c1"&gt;# Create a new cluster with the config file&lt;/span&gt;
kind create cluster --name wslkindmultinodes --config ./kind-3nodes.yaml
&lt;span class="c1"&gt;# Check how many nodes it created&lt;/span&gt;
kubectl get nodes
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/16.png" /&gt;
&lt;/div&gt;
&lt;div class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: ERROR/3 (&lt;span class="docutils literal"&gt;/home/docs/checkouts/readthedocs.org/user_builds/gzh/checkouts/latest/blogs/Kubernetes/2020-09-27-WSL-Docker-Kubernetes-on-the-Windows-Desktop.rst&lt;/span&gt;, line 253)&lt;/p&gt;
&lt;p&gt;Figure caption must be a paragraph or empty comment.&lt;/p&gt;
&lt;div class="highlight-default notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;.. figure:: https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/16.png
   :alt:

    提示：根据我们运行 &amp;quot;get nodes&amp;quot;命令的速度，可能不是所有的节点都准备好了，等几秒钟再运行，一切都应该准备好了。
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;到此，我们已经创建完了三节点的一个集群，我们通过下面的命令再来看一下，如果你仔细看你会发现，每一个服务都是三副本的了。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Check the services for the whole cluster&lt;/span&gt;
kubectl get all --all-namespaces
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/17.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="k8s-dashboard"&gt;
&lt;h3&gt;5.3 查看k8s Dashboard&lt;/h3&gt;
&lt;p&gt;对于开发人员来说，在命令行上执行操作是可以接受，并且这样效率也比较高。然而，在处理Kubernetes时，我们可能希望在某些时候有一个可视化的概述。为此，我们创建了&lt;a class="reference external" href="https://github.com/kubernetes/dashboard"&gt;Kubernetes
Dashboard&lt;/a&gt;项目。安装和第一次连接测试是相当快的，所以我们来做吧。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Install the Dashboard application into our cluster&lt;/span&gt;
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc6/aio/deploy/recommended.yaml
&lt;span class="c1"&gt;# Check the resources it created based on the new namespace created&lt;/span&gt;
kubectl get all -n kubernetes-dashboard
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/18.png" /&gt;
&lt;/div&gt;
&lt;p&gt;虽然kind使用&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;ClusterIP&lt;/span&gt;&lt;/code&gt;为集群创建了一个&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;service&lt;/span&gt;&lt;/code&gt;，但是由于这个IP是一个内网的IP，所以我们现在还无法从页面上直接访问&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;dashboard&lt;/span&gt;&lt;/code&gt;服务。&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/19.png" /&gt;
&lt;/div&gt;
&lt;p&gt;这个问题可以通过创建一个&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;proxy&lt;/span&gt;&lt;/code&gt;来解决：&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Start a kubectl proxy&lt;/span&gt;
kubectl proxy
&lt;span class="c1"&gt;# Enter the URL on your browser: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/20.png" /&gt;
&lt;/div&gt;
&lt;p&gt;最后要登录，我们可以输入一个我们没有创建的Token，或者从我们的Cluster中输入kubeconfig文件。&lt;/p&gt;
&lt;p&gt;如果我们尝试用kubeconfig登录，我们会得到错误 “Internal error (500): Not enough data to create auth info structure”。没有足够的数据来创建Auth信息结构”。这是由于kubeconfig文件中缺乏凭证。&lt;/p&gt;
&lt;p&gt;因此，为了避免你以同样的错误结束，让我们按照推荐的RBAC方法。&lt;/p&gt;
&lt;p&gt;让我们打开一个新的WSL2会话。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Create a new ServiceAccount&lt;/span&gt;
kubectl apply -f - &lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;apiVersion: v1&lt;/span&gt;
&lt;span class="s"&gt;kind: ServiceAccount&lt;/span&gt;
&lt;span class="s"&gt;metadata:&lt;/span&gt;
&lt;span class="s"&gt;  name: admin-user&lt;/span&gt;
&lt;span class="s"&gt;  namespace: kubernetes-dashboard&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;span class="c1"&gt;# Create a ClusterRoleBinding for the ServiceAccount&lt;/span&gt;
kubectl apply -f - &lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;apiVersion: rbac.authorization.k8s.io/v1&lt;/span&gt;
&lt;span class="s"&gt;kind: ClusterRoleBinding&lt;/span&gt;
&lt;span class="s"&gt;metadata:&lt;/span&gt;
&lt;span class="s"&gt;  name: admin-user&lt;/span&gt;
&lt;span class="s"&gt;roleRef:&lt;/span&gt;
&lt;span class="s"&gt;  apiGroup: rbac.authorization.k8s.io&lt;/span&gt;
&lt;span class="s"&gt;  kind: ClusterRole&lt;/span&gt;
&lt;span class="s"&gt;  name: cluster-admin&lt;/span&gt;
&lt;span class="s"&gt;subjects:&lt;/span&gt;
&lt;span class="s"&gt;- kind: ServiceAccount&lt;/span&gt;
&lt;span class="s"&gt;  name: admin-user&lt;/span&gt;
&lt;span class="s"&gt;  namespace: kubernetes-dashboard&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/21.png" /&gt;
&lt;/div&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Get the Token for the ServiceAccount&lt;/span&gt;
kubectl -n kubernetes-dashboard describe secret &lt;span class="k"&gt;$(&lt;/span&gt;kubectl -n kubernetes-dashboard get secret &lt;span class="p"&gt;|&lt;/span&gt; grep admin-user &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print $1}&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Copy the token and copy it into the Dashboard login and press &amp;quot;Sign in&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/22.png" /&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/23.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="minikube-k8s"&gt;
&lt;h2&gt;6. minikube: 让k8s可任意部署&lt;/h2&gt;
&lt;p&gt;现在，我们的Docker已经安装好了，配置好了，上次的测试也很正常。&lt;/p&gt;
&lt;p&gt;但是，如果我们仔细观察kubectl命令，它找到了 “Client Version”（1.15.5），但它没有找到任何服务器。&lt;/p&gt;
&lt;p&gt;这很正常，因为我们没有启用Docker Kubernetes集群。所以让我们安装Minikube并创建我们的第一个集群。&lt;/p&gt;
&lt;p&gt;我们将按照&lt;a class="reference external" href="https://kubernetes.io/docs/tasks/tools/install-minikube/"&gt;Kubernetes.io网站上的方法（部分）&lt;/a&gt;进行操作。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Download the latest version of Minikube&lt;/span&gt;
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
&lt;span class="c1"&gt;# Make the binary executable&lt;/span&gt;
chmod +x ./minikube
&lt;span class="c1"&gt;# Move the binary to your executable path&lt;/span&gt;
sudo mv ./minikube /usr/local/bin/
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/24.png" /&gt;
&lt;/div&gt;
&lt;div class="section" id="host"&gt;
&lt;h3&gt;6.1 更新Host&lt;/h3&gt;
&lt;p&gt;如果我们按照how-to，它提示我们应该使用–driver=none标志，以便直接在主机和Docker上运行Minikube。&lt;/p&gt;
&lt;p&gt;不幸的是，我们会得到一个关于运行Kubernetes v 1.18需要 “conntrack”的错误信息&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Create a minikube one node cluster&lt;/span&gt;
minikube start --driver&lt;span class="o"&gt;=&lt;/span&gt;none
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/25.png" /&gt;
&lt;/div&gt;
&lt;p&gt;根据提示，我们是缺少了一个包，下面我们就把它安装上：&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Install the conntrack package&lt;/span&gt;
sudo apt install -y conntrack
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;安装完成后，再次启动：&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Create a minikube one node cluster&lt;/span&gt;
minikube start --driver&lt;span class="o"&gt;=&lt;/span&gt;none
&lt;span class="c1"&gt;# We got a permissions error &amp;gt; try again with sudo&lt;/span&gt;
sudo minikube start --driver&lt;span class="o"&gt;=&lt;/span&gt;none
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/26.png" /&gt;
&lt;/div&gt;
&lt;p&gt;这次是不是没有出错呢。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="systemd"&gt;
&lt;h3&gt;6.2 启用&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;systemd&lt;/span&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;为了能够使用&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;systemd&lt;/span&gt;&lt;/code&gt;，我们需要按照这个&lt;a class="reference external" href="https://github.com/DamionGans/ubuntu-wsl2-systemd-script"&gt;脚本&lt;/a&gt;来配置一下。&lt;/p&gt;
&lt;blockquote&gt;
&lt;div&gt;&lt;p&gt;说明：如果您想了解更多关于这个脚本背后的考虑，请&lt;a class="reference external" href="https://forum.snapcraft.io/t/running-snaps-on-wsl2-insiders-only-for-now/13033"&gt;参考&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;在终端中输入以下命令：&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Install the needed packages&lt;/span&gt;
sudo apt install -yqq daemonize dbus-user-session fontconfig
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/27.png" /&gt;
&lt;/div&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Create the start-systemd-namespace script&lt;/span&gt;
sudo vi /usr/sbin/start-systemd-namespace
&lt;span class="c1"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nv"&gt;SYSTEMD_PID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;ps -ef &lt;span class="p"&gt;|&lt;/span&gt; grep &lt;span class="s1"&gt;&amp;#39;/lib/systemd/systemd --system-unit=basic.target$&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -v unshare &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SYSTEMD_PID&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SYSTEMD_PID&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
    &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PRE_NAMESPACE_PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
    &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt; -o posix&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^BASH&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^DIRSTACK=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^EUID=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^GROUPS=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^HOME=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^HOSTNAME=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^HOSTTYPE=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^IFS=&amp;#39;.*&amp;quot;&lt;/span&gt;&lt;span class="s1"&gt;$&amp;#39;\n&amp;#39;&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&amp;#39;&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^LANG=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^LOGNAME=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^MACHTYPE=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^NAME=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^OPTERR=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^OPTIND=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^OSTYPE=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^PIPESTATUS=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^POSIXLY_CORRECT=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^PPID=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^PS1=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^PS4=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^SHELL=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^SHELLOPTS=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^SHLVL=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^SYSTEMD_PID=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^UID=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^USER=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        grep -v &lt;span class="s2"&gt;&amp;quot;^_=&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        cat - &amp;gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.systemd-env&amp;quot;&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;PATH=&amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;#39;&amp;quot;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.systemd-env&amp;quot;&lt;/span&gt;
    &lt;span class="nb"&gt;exec&lt;/span&gt; sudo /usr/sbin/enter-systemd-namespace &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$BASH_EXECUTION_STRING&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PRE_NAMESPACE_PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
    &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PRE_NAMESPACE_PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Create the enter-systemd-namespace&lt;/span&gt;
sudo vi /usr/sbin/enter-systemd-namespace
&lt;span class="c1"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$UID&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;You need to run &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt; through sudo&amp;quot;&lt;/span&gt;
    &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="nv"&gt;SYSTEMD_PID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;ps -ef &lt;span class="p"&gt;|&lt;/span&gt; grep &lt;span class="s1"&gt;&amp;#39;/lib/systemd/systemd --system-unit=basic.target$&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -v unshare &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SYSTEMD_PID&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
    /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit&lt;span class="o"&gt;=&lt;/span&gt;basic.target
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SYSTEMD_PID&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="nv"&gt;SYSTEMD_PID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;ps -ef &lt;span class="p"&gt;|&lt;/span&gt; grep &lt;span class="s1"&gt;&amp;#39;/lib/systemd/systemd --system-unit=basic.target$&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -v unshare &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SYSTEMD_PID&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SYSTEMD_PID&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;bash --login&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; !&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/bin/bash --login&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
        &lt;span class="nb"&gt;exec&lt;/span&gt; /usr/bin/nsenter -t &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SYSTEMD_PID&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; -a &lt;span class="se"&gt;\&lt;/span&gt;
            /usr/bin/sudo -H -u &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SUDO_USER&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
            /bin/bash -c &lt;span class="s1"&gt;&amp;#39;set -a; source &amp;quot;$HOME/.systemd-env&amp;quot;; set +a; exec bash -c &amp;#39;&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;%q&amp;quot;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
        &lt;span class="nb"&gt;exec&lt;/span&gt; /usr/bin/nsenter -t &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SYSTEMD_PID&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; -a &lt;span class="se"&gt;\&lt;/span&gt;
            /bin/login -p -f &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$SUDO_USER&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
            &lt;span class="k"&gt;$(&lt;/span&gt;/bin/cat &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.systemd-env&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -v &lt;span class="s2"&gt;&amp;quot;^PATH=&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;fi&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Existential crisis&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Edit the permissions of the enter-systemd-namespace script&lt;/span&gt;
sudo chmod +x /usr/sbin/enter-systemd-namespace
&lt;span class="c1"&gt;# Edit the bash.bashrc file&lt;/span&gt;
sudo sed -i 2a&lt;span class="s2"&gt;&amp;quot;# Start or enter a PID namespace in WSL2\nsource /usr/sbin/start-systemd-namespace\n&amp;quot;&lt;/span&gt; /etc/bash.bashrc
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/28.png" /&gt;
&lt;/div&gt;
&lt;p&gt;现在再重新打开一个wsl2的窗口，&lt;strong&gt;没有必要&lt;/strong&gt;把前一个窗口关闭。&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/29.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="id5"&gt;
&lt;h3&gt;6.3 创建集群&lt;/h3&gt;
&lt;p&gt;下面我们创建我们的第一个集群:&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Check if the KUBECONFIG is not set&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$KUBECONFIG&lt;/span&gt;
&lt;span class="c1"&gt;# Check if the .kube directory is created &amp;gt; if not, no need to create it&lt;/span&gt;
ls &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube
&lt;span class="c1"&gt;# Check if the .minikube directory is created &amp;gt; if yes, delete it&lt;/span&gt;
ls &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.minikube
&lt;span class="c1"&gt;# Create the cluster with sudo&lt;/span&gt;
sudo minikube start --driver&lt;span class="o"&gt;=&lt;/span&gt;none
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;为了不用&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;sudo&lt;/span&gt;&lt;/code&gt;就能执行&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;kubelet&lt;/span&gt;&lt;/code&gt;，&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Minikube&lt;/span&gt;&lt;/code&gt;建议执行一下&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;chown&lt;/span&gt;&lt;/code&gt;命令:&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Change the owner of the .kube and .minikube directories&lt;/span&gt;
sudo chown -R &lt;span class="nv"&gt;$USER&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.minikube
&lt;span class="c1"&gt;# Check the access and if the cluster is running&lt;/span&gt;
kubectl cluster-info
&lt;span class="c1"&gt;# Check the resources created&lt;/span&gt;
kubectl get all --all-namespaces
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/30.png" /&gt;
&lt;/div&gt;
&lt;p&gt;集群成功创建了，并且&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;Minikube&lt;/span&gt;&lt;/code&gt;使用的是wsl2的IP，这样以来，我们不需要新配置&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;proxy&lt;/span&gt;&lt;/code&gt;就可以直接访问dashboard了。&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/31.png" /&gt;
&lt;/div&gt;
&lt;p&gt;而WSL2集成的真正优势，&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;8443&lt;/span&gt;&lt;/code&gt;端口一旦在WSL2发行版上打开，它其实是转发到Windows上的，所以我们不需要代理这个IP地址，也可以通过localhost访问到Kubernetes的dashboard
URL。&lt;/p&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/32.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="dashboard"&gt;
&lt;h3&gt;6.4 访问dashboard&lt;/h3&gt;
&lt;p&gt;在命令行上工作总是好的，而且非常有见地。然而，当处理Kubernetes时，我们可能会在某些时候希望有一个可视化的概述。&lt;/p&gt;
&lt;p&gt;为此，Minikube嵌入了Kubernetes Dashboard。得益于它，运行和访问Dashboard非常简单。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Enable the Dashboard service&lt;/span&gt;
sudo minikube dashboard
&lt;span class="c1"&gt;# Access the Dashboard from a browser on Windows side&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/33.png" /&gt;
&lt;/div&gt;
&lt;p&gt;该命令还创建了一个代理，这意味着一旦我们按CTRL+C键结束该命令，Dashboard将不再被访问。&lt;/p&gt;
&lt;p&gt;不过，如果我们查看命名空间kubernetes-dashboard，我们会发现服务仍然存在。&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Get all the services from the dashboard namespace&lt;/span&gt;
kubectl get all --namespace kubernetes-dashboard
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/34.png" /&gt;
&lt;/div&gt;
&lt;p&gt;接下来，我们更改一下&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;service&lt;/span&gt;&lt;/code&gt;的类型，让他以&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;LoadBalancer&lt;/span&gt;&lt;/code&gt;作为后端：&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Edit the Dashoard service&lt;/span&gt;
kubectl edit service/kubernetes-dashboard --namespace kubernetes-dashboard
&lt;span class="c1"&gt;# Go to the very end and remove the last 2 lines&lt;/span&gt;
status:
  loadBalancer: &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="c1"&gt;# Change the type from ClusterIO to LoadBalancer&lt;/span&gt;
  type: LoadBalancer
&lt;span class="c1"&gt;# Save the file&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/35.png" /&gt;
&lt;/div&gt;
&lt;p&gt;再次查看dashboard相关的&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;service&lt;/span&gt;&lt;/code&gt;，这次我们通过&lt;code class="docutils literal notranslate"&gt;&lt;span class="pre"&gt;LoadBalancer&lt;/span&gt;&lt;/code&gt;来访问：&lt;/p&gt;
&lt;div class="highlight-bash notranslate"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# Get all the services from the dashboard namespace&lt;/span&gt;
kubectl get all --namespace kubernetes-dashboard
&lt;span class="c1"&gt;# Access the Dashboard from a browser on Windows side with the URL: localhost:&amp;lt;port exposed&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="figure align-default"&gt;
&lt;img alt="" src="https://gitee.com/double12gzh/wiki-pictures/raw/master/2020-09-27-wsl_docker_kubernetes_win10/36.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="id6"&gt;
&lt;h2&gt;7. 结论&lt;/h2&gt;
&lt;p&gt;很明显，我们还远远没有完成，因为我们可以实现一些LoadBalancing和/或其他服务（存储、入口、注册表等）。&lt;/p&gt;
&lt;p&gt;关于WSL2上的Minikube，由于它需要启用SystemD，我们可以把它看作是一个中间层来实现。&lt;/p&gt;
&lt;p&gt;那么，在两种解决方案中，什么才是 “最适合你”的呢？两者都有各自的优势和不便，所以这里仅从我们的角度来概述一下。&lt;/p&gt;
&lt;table class="docutils align-default"&gt;
&lt;colgroup&gt;
&lt;col style="width: 31%" /&gt;
&lt;col style="width: 50%" /&gt;
&lt;col style="width: 19%" /&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr class="row-odd"&gt;&lt;th class="head"&gt;&lt;p&gt;对比项&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Kind&lt;/p&gt;&lt;/th&gt;
&lt;th class="head"&gt;&lt;p&gt;Minikube&lt;/p&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class="row-even"&gt;&lt;td&gt;&lt;p&gt;与WSL2共同使用&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;非常简单&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;一般简单&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="row-odd"&gt;&lt;td&gt;&lt;p&gt;多节点&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;支持&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;不支持&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="row-even"&gt;&lt;td&gt;&lt;p&gt;插件&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;手动安装&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;自动安装&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="row-odd"&gt;&lt;td&gt;&lt;p&gt;持久化&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;支持(但这并不是它的本初设计)&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;支持&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class="row-even"&gt;&lt;td&gt;&lt;p&gt;同类型的其它产品&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;k3s&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;p&gt;MicroK8s&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;我们希望你能真正体验到不同组件之间的整合。WSL2 - Docker Desktop -KinD/Minikube。这给了你一些想法，甚至更好的是，给了你在Windows和WSL2上使用KinD和/或Minikube的Kubernetes工作流的一些答案。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="id7"&gt;
&lt;h2&gt;8. 出处&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://kubernetes.io/blog/2020/05/21/wsl-docker-kubernetes-on-the-windows-desktop/"&gt;WSL+Docker: Kubernetes on the Windows
Desktop&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
    <link href="double12gzhblogs.readthedocs.io/blogs/Kubernetes/2020-09-27-WSL-Docker-Kubernetes-on-the-Windows-Desktop.html" rel="alternate"/>
    <published>2020-09-27T00:00:00+00:00</published>
  </entry>
</feed>
