两个钟 發表於 2022-1-27 11:00:00

在 Ubuntu 上安装 K8S教程

<h2>引用网址:https://cloud.tencent.com/developer/article/1817826</h2>
<h2 id="%E5%9C%A8-Ubuntu-%E4%B8%8A%E5%AE%89%E8%A3%85-K8S%E6%95%99%E7%A8%8B">在 Ubuntu 上安装 K8S教程</h2>
<p>目录</p>
<ul class="ul-level-0">
<li>在 Ubuntu 上安装 K8S教程
<ul class="ul-level-1">
<li>1,更新系统源</li>
<li>2,更新软件包</li>
<li>3,安装 Docker</li>
<li>也可以参考其它过程安装</li>
<li>4,安装 K8S</li>
<li>5,初始化</li>
<li>6,使主节点生效</li>
<li>7,查看 Node</li>
<li>8,安装面板</li>
<li>9,访问面板(dashboard)</li>
<li>10,添加 Node 进行测试</li>
</ul>
</li>
</ul>
<h3 id="1%EF%BC%8C%E6%9B%B4%E6%96%B0%E7%B3%BB%E7%BB%9F%E6%BA%90">1,更新系统源</h3>
<p>如果系统本身自带得镜像地址,服务器在国外,下载速度会很慢,可以打开 <code>/etc/apt/sources.lis</code> 替换为国内得镜像源。</p>
<pre class="prism-token tokenlanguage-javascript">apt upgrade</pre>
<h3 id="2%EF%BC%8C%E6%9B%B4%E6%96%B0%E8%BD%AF%E4%BB%B6%E5%8C%85">2,更新软件包</h3>
<p>将系统得软件组件更新至最新稳定版本。</p>
<pre class="prism-token tokenlanguage-javascript">apt update</pre>
<h3 id="3%EF%BC%8C%E5%AE%89%E8%A3%85-Docker">3,安装 Docker</h3>
<h3 id="%E4%B9%9F%E5%8F%AF%E4%BB%A5%E5%8F%82%E8%80%83%E5%85%B6%E5%AE%83%E8%BF%87%E7%A8%8B%E5%AE%89%E8%A3%85">也可以参考其它过程安装</h3>
<pre class="prism-token tokenlanguage-javascript">apt<span class="token operator">-<span class="token keyword">get install docker<span class="token punctuation">.io</span></span></span></pre>
<p>如果需要配置为开机启动,可执行以下命令</p>
<pre class="prism-token tokenlanguage-javascript">systemcd enable docker

systemcd start docker</pre>
<p>如果要配置 Docker 镜像加速,打开 <code>/etc/docker/daemon.json</code> 文件,registry-mirrors 增加或修改,加入<code>https://registry.docker-cn.com</code> 这个地址,也可以填写阿里云腾讯云等镜像加速地址。</p>
<p>示例</p>
<pre class="prism-token tokenlanguage-javascript"><span class="token punctuation">{
        <span class="token string">"registry-mirrors"<span class="token operator">: <span class="token punctuation">[

                <span class="token string">"https://registry.docker-cn.com"

        <span class="token punctuation">]

<span class="token punctuation">}</span></span></span></span></span></span></span></pre>
<p>重启 Docker,使配置生效</p>
<pre class="prism-token tokenlanguage-javascript">sudo systemctl daemon<span class="token operator">-reload

sudo systemctl restart docker</span></pre>
<h3 id="4%EF%BC%8C%E5%AE%89%E8%A3%85-K8S">4,安装 K8S</h3>
<p>执行以下命令安装 https 工具以及 k8s。</p>
<pre class="prism-token tokenlanguage-javascript">apt<span class="token operator">-<span class="token keyword">get update <span class="token operator">&amp;&amp; apt<span class="token operator">-<span class="token keyword">get install <span class="token operator">-y apt<span class="token operator">-transport<span class="token operator">-https curl
apt<span class="token operator">-<span class="token keyword">get install <span class="token operator">-y kubelet kubeadm kubectl <span class="token operator">--allow<span class="token operator">-unauthenticated</span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>执行下面命令测试是否正常</p>
<pre class="prism-token tokenlanguage-javascript">kubeadm init</pre>
<p>如果安装时,出现下面情况,说明系统得镜像源中,找不到 k8s 的软件包。</p>
<pre class="prism-token tokenlanguage-javascript">No apt <span class="token keyword">package <span class="token string">"kubeadm"<span class="token punctuation">, but there is a snap <span class="token keyword">with that name<span class="token punctuation">.
Try <span class="token string">"snap install kubeadm"


No apt <span class="token keyword">package <span class="token string">"kubectl"<span class="token punctuation">, but there is a snap <span class="token keyword">with that name<span class="token punctuation">.
Try <span class="token string">"snap install kubectl"


No apt <span class="token keyword">package <span class="token string">"kubelet"<span class="token punctuation">, but there is a snap <span class="token keyword">with that name<span class="token punctuation">.
Try <span class="token string">"snap install kubelet"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>可以打开 <code>/etc/apt/sources.list </code> 文件,添加一行</p>
<pre class="prism-token tokenlanguage-javascript">deb https<span class="token operator">:<span class="token operator">/<span class="token operator">/mirrors<span class="token punctuation">.aliyun<span class="token punctuation">.com<span class="token operator">/kubernetes<span class="token operator">/apt kubernetes<span class="token operator">-xenial main</span></span></span></span></span></span></span></span></pre>
<p>再次执行安装 K8s 的命令。</p>
<p>如果出现</p>
<pre class="prism-token tokenlanguage-javascript">The following signatures couldn't be verified because the <span class="token keyword">public key is not available</span></pre>
<p>则执行下面命令,为期添加 key。</p>
<pre class="prism-token tokenlanguage-javascript">curl https<span class="token operator">:<span class="token operator">/<span class="token operator">/mirrors<span class="token punctuation">.aliyun<span class="token punctuation">.com<span class="token operator">/kubernetes<span class="token operator">/apt<span class="token operator">/doc<span class="token operator">/apt<span class="token operator">-key<span class="token punctuation">.gpg <span class="token operator">| sudo apt<span class="token operator">-key add </span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>上面命令,安装了 <code>kubelet</code>、<code>kubeadm</code>、<code>kubectl</code> ,<code>kubelet</code> 是 k8s 相关服务,<code>kubectl</code> 是 <code>k8s</code> 管理客户端,<code>kubeadm</code> 是部署工具。</p>
<h3 id="5%EF%BC%8C%E5%88%9D%E5%A7%8B%E5%8C%96">5,初始化</h3>
<p>执行下面命令进行初始化,会自动从网络中下载需要的 Docker 镜像。</p>
<p>此命令是用来部署主节点的(Master)。</p>
<p>执行 <code>kubeadm version</code> 查看版本,<code>GitVersion:"v1.17.2"</code> 中即为版本号。</p>
<p>执行以下命令初始化</p>
<pre class="prism-token tokenlanguage-javascript">kubeadm init <span class="token operator">--pod<span class="token operator">-network<span class="token operator">-cidr<span class="token operator">=<span class="token number">10.244<span class="token number">.0<span class="token number">.0<span class="token operator">/<span class="token number">16 <span class="token operator">--ignore<span class="token operator">-preflight<span class="token operator">-errors<span class="token operator">=NumCPU</span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p><code>--ignore-preflight-errors=NumCPU</code> 是在只有一个 CPU 的时候使用,例如 1G1M 的学生服务器。</p>
<p>但是因为需要连接到 Google ,所以可能无法下载内容。</p>
<p>我们可以通过使用 <code>kubeadm config images list</code> 命令,列举需要拉取的镜像。我们来手动通过 Docker 拉取。这个过程比较麻烦,还需要手动修改镜像名称。</p>
<p>拉取方法 <code>docker pull {镜像名称}</code>。</p>
<p>Google 访问不了,不过 DockerHub 已经备份好需要的镜像。</p>
<p>mirrorgooglecontainers 这个仓库备份了相应的镜像。遗憾的是,镜像不一定都是最新的备份。阿里云上面的 google_containers 仓库应该是备份最新的。</p>
<p>例如需要以下镜像</p>
<pre class="prism-token tokenlanguage-javascript">k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kube<span class="token operator">-apiserver<span class="token operator">:v1<span class="token punctuation">.<span class="token number">17.2
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kube<span class="token operator">-controller<span class="token operator">-manager<span class="token operator">:v1<span class="token punctuation">.<span class="token number">17.2
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kube<span class="token operator">-scheduler<span class="token operator">:v1<span class="token punctuation">.<span class="token number">17.2
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kube<span class="token operator">-proxy<span class="token operator">:v1<span class="token punctuation">.<span class="token number">17.2
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/pause<span class="token operator">:<span class="token number">3.1
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/etcd<span class="token operator">:<span class="token number">3.4<span class="token number">.3<span class="token operator">-<span class="token number">0
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/coredns<span class="token operator">:<span class="token number">1.6<span class="token number">.5</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>则拉取对应的镜像</p>
<pre class="prism-token tokenlanguage-javascript">docker pull mirrorgooglecontainers<span class="token operator">/kube<span class="token operator">-apiserver<span class="token operator">:v1<span class="token punctuation">.<span class="token number">17.2
docker pull mirrorgooglecontainers<span class="token operator">/kube<span class="token operator">-controller<span class="token operator">-manager<span class="token operator">:v1<span class="token punctuation">.<span class="token number">17.2
docker pull mirrorgooglecontainers<span class="token operator">/kube<span class="token operator">-scheduler<span class="token operator">:v1<span class="token punctuation">.<span class="token number">15.0
docker pull mirrorgooglecontainers<span class="token operator">/kube<span class="token operator">-proxy<span class="token operator">:v1<span class="token punctuation">.<span class="token number">17.2
docker pull mirrorgooglecontainers<span class="token operator">/pause<span class="token operator">:<span class="token number">3.1
docker pull mirrorgooglecontainers<span class="token operator">/etcd<span class="token operator">:<span class="token number">3.4<span class="token number">.3<span class="token operator">-<span class="token number">0
docker pull coredns<span class="token operator">/coredns<span class="token operator">:<span class="token number">1.6<span class="token number">.5</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>使用 <code>docker tag {旧名称:版本}:{新名称:版本}</code> ,将镜像改名。</p>
<p>考虑到各种情况和可能会出现问题,笔者这里给出一个别人写的一键脚本,可以直接一键完成这一步。</p>
<pre class="prism-token tokenlanguage-javascript">touch pullk8s<span class="token punctuation">.sh        # 创建脚本文件</span></pre>
<pre class="prism-token tokenlanguage-javascript">nano pullk8s<span class="token punctuation">.sh                # 编辑脚本</span></pre>
<p>然后将以下内容复制进去</p>
<pre class="prism-token tokenlanguage-javascript"><span class="token keyword">fori<span class="token keyword">in<span class="token template-string"><span class="token template-punctuation string">`<span class="token string">kubeadm config images list<span class="token template-punctuation string">`<span class="token punctuation">;<span class="token keyword">do
    imageName<span class="token operator">=$<span class="token punctuation">{i#k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/<span class="token punctuation">}
    docker pull registry<span class="token punctuation">.aliyuncs<span class="token punctuation">.com<span class="token operator">/google_containers<span class="token operator">/$imageName
    docker tag registry<span class="token punctuation">.aliyuncs<span class="token punctuation">.com<span class="token operator">/google_containers<span class="token operator">/$imageName k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/$imageName
    docker rmi registry<span class="token punctuation">.aliyuncs<span class="token punctuation">.com<span class="token operator">/google_containers<span class="token operator">/$imageName
done<span class="token punctuation">;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>保存文件</p>
<pre class="prism-token tokenlanguage-javascript">Ctrl <span class="token operator">+ <span class="token constant">O
回车键
Ctrl <span class="token operator">+ x</span></span></span></pre>
<p>给脚本文件赋权限</p>
<pre class="prism-token tokenlanguage-javascript">chmod <span class="token operator">+x pullk8s<span class="token punctuation">.sh</span></span></pre>
<p>执行脚本</p>
<pre class="prism-token tokenlanguage-javascript">sh pullk8s<span class="token punctuation">.sh</span></pre>
<p>然后执行 <code>docker images</code> 命令查看需要的镜像是否都准备好了。</p>
<pre class="prism-token tokenlanguage-javascript">root@instance<span class="token operator">-wxxixh4k<span class="token operator">:<span class="token operator">~# docker images
<span class="token constant">REPOSITORY                           <span class="token constant">TAG               <span class="token constant">IMAGE <span class="token constant">ID            <span class="token constant">CREATED             <span class="token constant">SIZE
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kube<span class="token operator">-proxy                v1<span class="token punctuation">.<span class="token number">17.2             cba2a99699bd      <span class="token number">2 weeks ago         <span class="token number">116MB
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kube<span class="token operator">-apiserver            v1<span class="token punctuation">.<span class="token number">17.2             <span class="token number">41ef50a5f06a      <span class="token number">2 weeks ago         <span class="token number">171MB
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kube<span class="token operator">-controller<span class="token operator">-manager   v1<span class="token punctuation">.<span class="token number">17.2             da5fd66c4068      <span class="token number">2 weeks ago         <span class="token number">161MB
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kube<span class="token operator">-scheduler            v1<span class="token punctuation">.<span class="token number">17.2             f52d4c527ef2      <span class="token number">2 weeks ago         <span class="token number">94.4MB
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/coredns                   <span class="token number">1.6<span class="token number">.5               <span class="token number">70f311871ae1      <span class="token number">3 months ago      <span class="token number">41.6MB
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/etcd                      <span class="token number">3.4<span class="token number">.3<span class="token operator">-<span class="token number">0             <span class="token number">303ce5db0e90      <span class="token number">3 months ago      <span class="token number">288MB
k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/pause                     <span class="token number">3.1               da86e6ba6ca1      <span class="token number">2 years ago         <span class="token number">742kB</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>最后执行 开头的初始化命令。</p>
<p>实在不行的话,可以尝试 https://learnku.com/articles/29209 中的安装教程。</p>
<h3 id="6%EF%BC%8C%E4%BD%BF%E4%B8%BB%E8%8A%82%E7%82%B9%E7%94%9F%E6%95%88">6,使主节点生效</h3>
<p>添加环境变量</p>
<pre class="prism-token tokenlanguage-javascript"><span class="token keyword">export <span class="token constant">KUBECONFIG<span class="token operator">=<span class="token operator">/etc<span class="token operator">/kubernetes<span class="token operator">/admin<span class="token punctuation">.conf</span></span></span></span></span></span></span></pre>
<p>添加网络插件</p>
<pre class="prism-token tokenlanguage-javascript">kubectl apply <span class="token operator">-f https<span class="token operator">:<span class="token operator">/<span class="token operator">/raw<span class="token punctuation">.githubusercontent<span class="token punctuation">.com<span class="token operator">/coreos<span class="token operator">/flannel<span class="token operator">/master<span class="token operator">/Documentation<span class="token operator">/kube<span class="token operator">-flannel<span class="token punctuation">.yml</span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>运行别人编写好的 yaml 配置文件</p>
<pre class="prism-token tokenlanguage-javascript">kubectl apply <span class="token operator">-f https<span class="token operator">:<span class="token operator">/<span class="token operator">/raw<span class="token punctuation">.githubusercontent<span class="token punctuation">.com<span class="token operator">/coreos<span class="token operator">/flannel<span class="token operator">/master<span class="token operator">/Documentation<span class="token operator">/kube<span class="token operator">-flannel<span class="token punctuation">.yml</span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>这一步也可以自己编写 yaml 。</p>
<p>执行后出现</p>
<pre class="prism-token tokenlanguage-javascript">odsecuritypolicy<span class="token punctuation">.policy<span class="token operator">/psp<span class="token punctuation">.flannel<span class="token punctuation">.unprivileged created
clusterrole<span class="token punctuation">.rbac<span class="token punctuation">.authorization<span class="token punctuation">.k8s<span class="token punctuation">.io<span class="token operator">/flannel created
clusterrolebinding<span class="token punctuation">.rbac<span class="token punctuation">.authorization<span class="token punctuation">.k8s<span class="token punctuation">.io<span class="token operator">/flannel created
serviceaccount<span class="token operator">/flannel created
configmap<span class="token operator">/kube<span class="token operator">-flannel<span class="token operator">-cfg created
daemonset<span class="token punctuation">.apps<span class="token operator">/kube<span class="token operator">-flannel<span class="token operator">-ds<span class="token operator">-amd64 created
daemonset<span class="token punctuation">.apps<span class="token operator">/kube<span class="token operator">-flannel<span class="token operator">-ds<span class="token operator">-arm64 created
daemonset<span class="token punctuation">.apps<span class="token operator">/kube<span class="token operator">-flannel<span class="token operator">-ds<span class="token operator">-arm created
daemonset<span class="token punctuation">.apps<span class="token operator">/kube<span class="token operator">-flannel<span class="token operator">-ds<span class="token operator">-ppc64le created
daemonset<span class="token punctuation">.apps<span class="token operator">/kube<span class="token operator">-flannel<span class="token operator">-ds<span class="token operator">-s390x created</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p><strong>保存使用配置</strong></p>
<pre class="prism-token tokenlanguage-javascript">kubeadm join</pre>
<h3 id="7%EF%BC%8C%E6%9F%A5%E7%9C%8B-Node">7,查看 Node</h3>
<p><strong>执行以下命令查看 Node</strong></p>
<pre class="prism-token tokenlanguage-javascript">kubectl <span class="token keyword">get nodes</span></pre>
<p>结果示例</p>
<pre class="prism-token tokenlanguage-javascript">root@instance<span class="token operator">-wxxixh4k<span class="token operator">:<span class="token operator">~# kubectl <span class="token keyword">get nodes
<span class="token constant">NAME                <span class="token constant">STATUS   <span class="token constant">ROLES    <span class="token constant">AGE   <span class="token constant">VERSION
instance<span class="token operator">-wxxixh4k   Ready    master   <span class="token number">9m23s   v1<span class="token punctuation">.<span class="token number">17.2</span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>说明已经成功了,并且能够添加移除 Node。</p>
<h3 id="8%EF%BC%8C%E5%AE%89%E8%A3%85%E9%9D%A2%E6%9D%BF">8,安装面板</h3>
<p><strong>下载 yaml 配置文件</strong></p>
<pre class="prism-token tokenlanguage-javascript">wget https<span class="token operator">:<span class="token operator">/<span class="token operator">/raw<span class="token punctuation">.githubusercontent<span class="token punctuation">.com<span class="token operator">/kubernetes<span class="token operator">/dashboard<span class="token operator">/v1<span class="token punctuation">.<span class="token number">10.1<span class="token operator">/src<span class="token operator">/deploy<span class="token operator">/alternative<span class="token operator">/kubernetes<span class="token operator">-dashboard<span class="token punctuation">.yaml</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>使用 <code>cat kubernetes-dashboard.yaml</code> 命令查看 yaml 文件内容,记录版本号。</p>
<p>文件中有类型以下内容的语句,后面的数字就是版本号。</p>
<pre class="prism-token tokenlanguage-javascript"> image<span class="token operator">: k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kubernetes<span class="token operator">-dashboard<span class="token operator">-amd64<span class="token operator">:v1<span class="token punctuation">.<span class="token number">10.1</span></span></span></span></span></span></span></span></span></pre>
<p>拉取 <code>kubernetes-dashboard </code> 镜像(注意修改后面的版本号)。</p>
<pre class="prism-token tokenlanguage-javascript">docker pull registry<span class="token punctuation">.aliyuncs<span class="token punctuation">.com<span class="token operator">/google_containers<span class="token operator">/kubernetes<span class="token operator">-dashboard<span class="token operator">-amd64<span class="token operator">:v1<span class="token punctuation">.<span class="token number">10.1
docker tag registry<span class="token punctuation">.aliyuncs<span class="token punctuation">.com<span class="token operator">/google_containers<span class="token operator">/kubernetes<span class="token operator">-dashboard<span class="token operator">-amd64<span class="token operator">:v1<span class="token punctuation">.<span class="token number">10.1 k8s<span class="token punctuation">.gcr<span class="token punctuation">.io<span class="token operator">/kubernetes<span class="token operator">-dashboard<span class="token operator">-amd64<span class="token operator">:v1<span class="token punctuation">.<span class="token number">10.1
docker rmi registry<span class="token punctuation">.aliyuncs<span class="token punctuation">.com<span class="token operator">/google_containers<span class="token operator">/kubernetes<span class="token operator">-dashboard<span class="token operator">-amd64<span class="token operator">:v1<span class="token punctuation">.<span class="token number">10.1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p><strong>安装 kubernetes-dashboard</strong></p>
<pre class="prism-token tokenlanguage-javascript">kubectl create <span class="token operator">-f kubernetes<span class="token operator">-dashboard<span class="token punctuation">.yaml</span></span></span></pre>
<p><strong>查看安装结果</strong></p>
<pre class="prism-token tokenlanguage-javascript">kubectl <span class="token keyword">get pod <span class="token operator">--namespace<span class="token operator">=kube<span class="token operator">-system</span></span></span></span></pre>
<p><strong>配置面板,添加 Admin 账号和权限</strong></p>
<p>复制粘贴下面内容到终端,按回车键。</p>
<pre class="prism-token tokenlanguage-javascript">cat <span class="token operator">&lt;&lt;<span class="token constant">EOF <span class="token operator">&gt; dashboard<span class="token operator">-admin<span class="token punctuation">.yaml
apiVersion<span class="token operator">: rbac<span class="token punctuation">.authorization<span class="token punctuation">.k8s<span class="token punctuation">.io<span class="token operator">/v1beta1
kind<span class="token operator">: ClusterRoleBinding
metadata<span class="token operator">:
name<span class="token operator">: kubernetes<span class="token operator">-dashboard
labels<span class="token operator">:
    k8s<span class="token operator">-app<span class="token operator">: kubernetes<span class="token operator">-dashboard
roleRef<span class="token operator">:
apiGroup<span class="token operator">: rbac<span class="token punctuation">.authorization<span class="token punctuation">.k8s<span class="token punctuation">.io
kind<span class="token operator">: ClusterRole
name<span class="token operator">: cluster<span class="token operator">-admin
subjects<span class="token operator">:
<span class="token operator">- kind<span class="token operator">: ServiceAccount
name<span class="token operator">: kubernetes<span class="token operator">-dashboard
namespace<span class="token operator">: kube<span class="token operator">-system
<span class="token constant">EOF</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p>上面代码会创建一个 dashboard-admin.yaml 文件。</p>
<p><strong>执行安装</strong></p>
<pre class="prism-token tokenlanguage-javascript">kubectl create <span class="token operator">-f dashboard<span class="token operator">-admin<span class="token punctuation">.yaml</span></span></span></pre>
<p><strong>查看节点端口</strong></p>
<pre class="prism-token tokenlanguage-javascript">kubectl <span class="token keyword">get svc <span class="token operator">--namespace<span class="token operator">=kube<span class="token operator">-system</span></span></span></span></pre>
<p>找到名为 <code>kubernetes-dashboard</code> 的节点,记录端口 。</p>
<p><strong>查看 pod 名称</strong></p>
<pre class="prism-token tokenlanguage-javascript">kubectl <span class="token keyword">get pod <span class="token operator">--namespace<span class="token operator">=kube<span class="token operator">-system</span></span></span></span></pre>
<p>其中有一个 <code>kubernetes-dashboard</code> 开头的,例如 <code>kubernetes-dashboard-6bf999dbcc-nc4hq</code>,记录名称。</p>
<h3 id="9%EF%BC%8C%E8%AE%BF%E9%97%AE%E9%9D%A2%E6%9D%BF(dashboard)">9,访问面板(dashboard)</h3>
<p>如果以下方法无法使用,请参考</p>
<p>https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/</p>
<p><strong>方法一:kubectl proxy</strong></p>
<p>执行</p>
<pre class="prism-token tokenlanguage-javascript">kubectl proxy</pre>
<p>内网即可使用下面地址访问</p>
<p>http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/</p>
<p><strong>方法二:API Server</strong></p>
<p>访问方法</p>
<p>https://{master-ip}:{apiserver-port}/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/</p>
<p>这里不再赘述,详细请参考网路资料。</p>
<p>方法三:直接暴露端口(NodePort)</p>
<p>不推荐使用。</p>
<p>执行</p>
<pre class="prism-token tokenlanguage-javascript">kubectl <span class="token operator">-n kube<span class="token operator">-system edit service kubernetes<span class="token operator">-dashboard</span></span></span></pre>
<p>找到 <code> type: ClusterIP</code>,改成 <code>type: NodePort</code>。</p>
<p>另外 <code> port</code> 也可以改一下。</p>
<p>提示:</p>
<p>进入时,先使用方向键盘移动到合适位置;删除字符请使用 <code>Delete</code> 键;</p>
<p>然后按一下 <code>Esc</code> 键,按下 <code>i</code> 键进入编辑;</p>
<p>按一下 <code>Esc</code> 键,按一下 <code>Shift + q</code>,会提示输入内容,输入 <code>wq!</code> 保存并退出。</p>
<p>执行 <code>kubectl -n kube-system get service kubernetes-dashboard</code> 查看到端口映射。</p>
<p>例如</p>
<pre class="prism-token tokenlanguage-javascript"> <span class="token number">80<span class="token operator">:<span class="token number">31901<span class="token operator">/<span class="token constant">TCP</span></span></span></span></span></pre>
<p>则访问方法是 https://{ip}:31901</p>
<p><strong>方法三</strong></p>
<pre class="prism-token tokenlanguage-javascript">kubectl port<span class="token operator">-forward kubernetes<span class="token operator">-dashboard<span class="token operator">-<span class="token number">6bf999dbcc<span class="token operator">-nc4hq <span class="token number">8080<span class="token operator">:<span class="token number">80 <span class="token operator">--namespace<span class="token operator">=kube<span class="token operator">-system <span class="token operator">&amp;</span></span></span></span></span></span></span></span></span></span></span></span></pre>
<h3 id="10%EF%BC%8C%E6%B7%BB%E5%8A%A0-Node-%E8%BF%9B%E8%A1%8C%E6%B5%8B%E8%AF%95">10,添加 Node 进行测试</h3>
<pre class="prism-token tokenlanguage-javascript">kubectl create deployment nginx <span class="token operator">--image<span class="token operator">=nginx
kubectl expose deployment nginx <span class="token operator">--port<span class="token operator">=<span class="token number">8090 <span class="token operator">--type<span class="token operator">=NodePort</span></span></span></span></span></span></span></pre>
<p>外网访问 8090 即可访问到 Nginx。</p><br><br>
来源:https://www.cnblogs.com/bruce1992/p/15849111.html
頁: [1]
查看完整版本: 在 Ubuntu 上安装 K8S教程