Kind快速部署Kubernetes多集群

Kind架构及原理

Kind 使用一个 container 来模拟一个 node,在 container 里面跑 systemd ,并用 systemd 托管 kubelet 以及 containerd,然后通过容器内部的 kubelet 把其他 K8s 组件,比如 kube-apiserver、etcd、CNI 等跑起来。

它可以通过配置文件的方式创建多个 container 来模拟创建多个 node,并以这些 node 构建一个多节点的 Kubernetes 集群。

Kind 内部使用的集群部署工具是 kubeadm,借助 kubeadm 提供的 Alpha 特性,它可以部署包括 HA master 的高可用集群。同时,在 HA master 下, 它还额外部署了一个 Nginx,用来提供负载均衡 vip。

Docker 安装

宿主机安装Docker

  1. <span>for</span> <span> pkg </span> <span>in</span> <span> docker</span> <span>.</span> <span>io docker</span> <span>-</span> <span>doc docker</span> <span>-</span> <span>compose docker</span> <span>-</span> <span>compose</span> <span>-</span> <span>v2 podman</span> <span>-</span> <span>docker containerd runc</span> <span>;</span> <span> </span> <span>do</span> <span> sudo apt</span> <span>-</span> <span>get</span> <span> remove $pkg</span> <span>;</span> <span> </span> <span>done</span>
  1. <span>sudo apt</span> <span>-</span> <span>get</span> <span> update</span>
  2. <span>sudo apt</span> <span>-</span> <span>get</span> <span> install ca</span> <span>-</span> <span>certificates curl gnupg</span>
  3. <span>sudo install </span> <span>-</span> <span>m </span> <span>0755</span> <span> </span> <span>-</span> <span>d </span> <span>/</span> <span>etc</span> <span>/</span> <span>apt</span> <span>/</span> <span>keyrings</span>
  4. <span>curl </span> <span>-</span> <span>fsSL https</span> <span>:</span> <span>//download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg</span>
  5. <span>sudo chmod a</span> <span>+</span> <span>r </span> <span>/</span> <span>etc</span> <span>/</span> <span>apt</span> <span>/</span> <span>keyrings</span> <span>/</span> <span>docker</span> <span>.</span> <span>gpg</span>
  6. <span># Add the repository to Apt sources:</span>
  7. <span>echo </span>
  8. <span> </span> <span>"deb [arch="</span> <span>$</span> <span>(</span> <span>dpkg </span> <span>--</span> <span>print</span> <span>-</span> <span>architecture</span> <span>)</span> <span>" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu </span>
  9. <span> "</span> <span>$</span> <span>(.</span> <span> </span> <span>/</span> <span>etc</span> <span>/</span> <span>os</span> <span>-</span> <span>release </span> <span>&&</span> <span> echo </span> <span>"$VERSION_CODENAME"</span> <span>)</span> <span>" stable"</span> <span> </span> <span>|</span> <span> </span>
  10. <span> sudo tee </span> <span>/</span> <span>etc</span> <span>/</span> <span>apt</span> <span>/</span> <span>sources</span> <span>.</span> <span>list</span> <span>.</span> <span>d</span> <span>/</span> <span>docker</span> <span>.</span> <span>list </span> <span>></span> <span> </span> <span>/dev/</span> <span>null</span>
  11. <span>sudo apt</span> <span>-</span> <span>get</span> <span> update</span>

安装Docker

  1. <span>sudo apt</span> <span>-</span> <span>get</span> <span> install docker</span> <span>-</span> <span>ce docker</span> <span>-</span> <span>ce</span> <span>-</span> <span>cli containerd</span> <span>.</span> <span>io docker</span> <span>-</span> <span>buildx</span> <span>-</span> <span>plugin docker</span> <span>-</span> <span>compose</span> <span>-</span> <span>plugin</span>

Kind安装

首先我们下载Kind二进制包

  1. <span>wget https</span> <span>:</span> <span>//github.com/kubernetes-sigs/kind/releases/download/v0.20.0/kind-linux-amd64</span>
  2. <span>mv kind</span> <span>-</span> <span>linux</span> <span>-</span> <span>amd64 </span> <span>/</span> <span>usr</span> <span>/</span> <span>bin</span> <span>/</span> <span>kind</span>
  3. <span>chmod </span> <span>+</span> <span>x </span> <span>/</span> <span>usr</span> <span>/</span> <span>bin</span> <span>/</span> <span>kind</span>

指定版本号并创建集群

  1. <span>cat </span> <span>></span> <span>kind</span> <span>-</span> <span>demo</span> <span>.</span> <span>yaml</span> <span><<</span> <span>EOF</span>
  2. <span>kind</span> <span>:</span> <span> </span> <span>Cluster</span>
  3. <span>name</span> <span>:</span> <span> abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span>
  4. <span>apiVersion</span> <span>:</span> <span> kind</span> <span>.</span> <span>x</span> <span>-</span> <span>k8s</span> <span>.</span> <span>io</span> <span>/</span> <span>v1alpha4</span>
  5. <span>networking</span> <span>:</span>
  6. <span> disableDefaultCNI</span> <span>:</span> <span> </span> <span>false</span>
  7. <span>nodes</span> <span>:</span>
  8. <span> </span> <span>-</span> <span> role</span> <span>:</span> <span> control</span> <span>-</span> <span>plane</span>
  9. <span> </span> <span>#- role: control-plane</span>
  10. <span> </span> <span>#- role: control-plane</span>
  11. <span> </span> <span>-</span> <span> role</span> <span>:</span> <span> worker</span>
  12. <span> </span> <span>-</span> <span> role</span> <span>:</span> <span> worker</span>
  13. <span> </span> <span>-</span> <span> role</span> <span>:</span> <span> worker</span>
  14. <span>EOF</span>

参数详解

  • name 设置集群名称
  • networking.disableDefaultCNI 创建的集群默认自带一个轻量级的 CNI 插件 kindnetd ,我们也可以禁用默认设置来安装其他 CNI,比如 Calico。
  • nodes control-plance master节点数量
  • nodes worker node节点数量

快速创建集群

本次版本采用v1.24.15

  1. <span>kind create cluster </span> <span>--</span> <span>config</span> <span>=</span> <span>kind</span> <span>-</span> <span>demo</span> <span>.</span> <span>yaml </span> <span>--</span> <span>image</span> <span>=</span> <span>kindest</span> <span>/</span> <span>node</span> <span>:</span> <span>v1</span> <span>.</span> <span>24.15</span> <span> </span> <span>--</span> <span>name</span> <span>=</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span>
  2. <span>日志输出以下</span>
  3. <span>Creating</span> <span> cluster </span> <span>"abcdocker-kind-demo"</span> <span> </span> <span>...</span>
  4. <span> </span> <span>✓</span> <span> </span> <span>Ensuring</span> <span> node image </span> <span>(</span> <span>kindest</span> <span>/</span> <span>node</span> <span>:</span> <span>v1</span> <span>.</span> <span>24.15</span> <span>)</span> <span> </span> <span>🖼</span>
  5. <span> </span> <span>✓</span> <span> </span> <span>Preparing</span> <span> nodes </span> <span>📦</span> <span> </span> <span>📦</span>
  6. <span> </span> <span>✓</span> <span> </span> <span>Writing</span> <span> configuration </span> <span>📜</span>
  7. <span> </span> <span>✓</span> <span> </span> <span>Starting</span> <span> control</span> <span>-</span> <span>plane </span> <span>🕹️</span>
  8. <span> </span> <span>✓</span> <span> </span> <span>Installing</span> <span> CNI </span> <span>🔌</span>
  9. <span> </span> <span>✓</span> <span> </span> <span>Installing</span> <span> </span> <span>StorageClass</span> <span> </span> <span>💾</span>
  10. <span> </span> <span>✓</span> <span> </span> <span>Joining</span> <span> worker nodes </span> <span>🚜</span>
  11. <span>Set</span> <span> kubectl context to </span> <span>"kind-abcdocker-kind-demo"</span>
  12. <span>You</span> <span> can now </span> <span>use</span> <span> your cluster </span> <span>with</span> <span>:</span>
  13. <span>kubectl cluster</span> <span>-</span> <span>info </span> <span>--</span> <span>context kind</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span>
  14. <span>Thanks</span> <span> </span> <span>for</span> <span> </span> <span>using</span> <span> kind</span> <span>!</span> <span> </span> <span>😊</span>

安装kubectl

  1. <span>curl </span> <span>-</span> <span>LO https</span> <span>:</span> <span>//dl.k8s.io/release/v1.24.15/bin/linux/amd64/kubectl</span>
  2. <span>chmod </span> <span>+</span> <span>x kubectl</span>
  3. <span>mv kubectl </span> <span>/</span> <span>usr</span> <span>/</span> <span>bin</span> <span>/</span>

可以查看集群状态

  1. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl cluster</span> <span>-</span> <span>info </span> <span>--</span> <span>context kind</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span>
  2. <span>Kubernetes</span> <span> control plane </span> <span>is</span> <span> running at https</span> <span>:</span> <span>//127.0.0.1:42687</span>
  3. <span>CoreDNS</span> <span> </span> <span>is</span> <span> running at https</span> <span>:</span> <span>//127.0.0.1:42687/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy</span>
  4. <span>To</span> <span> further debug </span> <span>and</span> <span> diagnose cluster problems</span> <span>,</span> <span> </span> <span>use</span> <span> </span> <span>'kubectl cluster-info dump'</span>

接下来我们就可以get node查看到节点信息

  1. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl </span> <span>get</span> <span> node</span>
  2. <span>NAME STATUS ROLES AGE VERSION</span>
  3. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>Ready</span> <span> control</span> <span>-</span> <span>plane </span> <span>2m2s</span> <span> v1</span> <span>.</span> <span>24.15</span>
  4. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>worker </span> <span>Ready</span> <span> </span> <span><none></span> <span> </span> <span>90s</span> <span> v1</span> <span>.</span> <span>24.15</span>
  5. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl </span> <span>get</span> <span> pod </span> <span>-</span> <span>n kube</span> <span>-</span> <span>system</span>
  6. <span>NAME READY STATUS RESTARTS AGE</span>
  7. <span>coredns</span> <span>-</span> <span>57575c5f89</span> <span>-</span> <span>9ltk6</span> <span> </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>108s</span>
  8. <span>coredns</span> <span>-</span> <span>57575c5f89</span> <span>-</span> <span>glgvh </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>107s</span>
  9. <span>etcd</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>2m7s</span>
  10. <span>kindnet</span> <span>-</span> <span>ljptz </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>99s</span>
  11. <span>kindnet</span> <span>-</span> <span>qzglw </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>109s</span>
  12. <span>kube</span> <span>-</span> <span>apiserver</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>2m5s</span>
  13. <span>kube</span> <span>-</span> <span>controller</span> <span>-</span> <span>manager</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>2m1s</span>
  14. <span>kube</span> <span>-</span> <span>proxy</span> <span>-</span> <span>kvzx9 </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>109s</span>
  15. <span>kube</span> <span>-</span> <span>proxy</span> <span>-</span> <span>pnzmz </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>99s</span>
  16. <span>kube</span> <span>-</span> <span>scheduler</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>2m9s</span>

Kind 常用命令

  1. <span>查看集群</span>
  2. <span>kind </span> <span>get</span> <span> clusters</span>
  3. <span>删除集群</span>
  4. <span>kind </span> <span>delete</span> <span> cluster </span> <span>--</span> <span>name </span> <span>集群名称</span>

Kind创建多套集群

实际上只是需要给yaml文件修改即可

  1. <span>cat </span> <span>></span> <span>kind</span> <span>-</span> <span>demo1</span> <span>.</span> <span>yaml</span> <span><<</span> <span>EOF</span>
  2. <span>kind</span> <span>:</span> <span> </span> <span>Cluster</span>
  3. <span>name</span> <span>:</span> <span> abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span>
  4. <span>apiVersion</span> <span>:</span> <span> kind</span> <span>.</span> <span>x</span> <span>-</span> <span>k8s</span> <span>.</span> <span>io</span> <span>/</span> <span>v1alpha4</span>
  5. <span>networking</span> <span>:</span>
  6. <span> disableDefaultCNI</span> <span>:</span> <span> </span> <span>true</span> <span> </span> <span>#这里开启个cni</span>
  7. <span>nodes</span> <span>:</span>
  8. <span> </span> <span>-</span> <span> role</span> <span>:</span> <span> control</span> <span>-</span> <span>plane</span>
  9. <span> </span> <span>#- role: control-plane</span>
  10. <span> </span> <span>#- role: control-plane</span>
  11. <span> </span> <span>-</span> <span> role</span> <span>:</span> <span> worker</span>
  12. <span>EOF</span>

disableDefaultCNI禁用了默认的kindnetd插件,CNI就需要我们自己安装flannel或者其它calico组件

使用下面命令创建集群

版本我们这边换成1.28.0

  1. <span>kind create cluster </span> <span>--</span> <span>config</span> <span>=</span> <span>kind</span> <span>-</span> <span>demo1</span> <span>.</span> <span>yaml </span> <span>--</span> <span>image</span> <span>=</span> <span>kindest</span> <span>/</span> <span>node</span> <span>:</span> <span>v1</span> <span>.</span> <span>28.0</span> <span> </span> <span>--</span> <span>name</span> <span>=</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span>
  2. <span>日志</span> <span> </span> <span>输出如下</span>
  3. <span>Creating</span> <span> cluster </span> <span>"abcdocker-kind-demo1"</span> <span> </span> <span>...</span>
  4. <span> </span> <span>✓</span> <span> </span> <span>Ensuring</span> <span> node image </span> <span>(</span> <span>kindest</span> <span>/</span> <span>node</span> <span>:</span> <span>v1</span> <span>.</span> <span>28.0</span> <span>)</span> <span> </span> <span>🖼</span>
  5. <span> </span> <span>✓</span> <span> </span> <span>Preparing</span> <span> nodes </span> <span>📦</span> <span> </span> <span>📦</span>
  6. <span> </span> <span>✓</span> <span> </span> <span>Writing</span> <span> configuration </span> <span>📜</span>
  7. <span> </span> <span>✓</span> <span> </span> <span>Starting</span> <span> control</span> <span>-</span> <span>plane </span> <span>🕹️</span>
  8. <span> </span> <span>✓</span> <span> </span> <span>Installing</span> <span> </span> <span>StorageClass</span> <span> </span> <span>💾</span>
  9. <span> </span> <span>✓</span> <span> </span> <span>Joining</span> <span> worker nodes </span> <span>🚜</span>
  10. <span>Set</span> <span> kubectl context to </span> <span>"kind-abcdocker-kind-demo1"</span>
  11. <span>You</span> <span> can now </span> <span>use</span> <span> your cluster </span> <span>with</span> <span>:</span>
  12. <span>kubectl cluster</span> <span>-</span> <span>info </span> <span>--</span> <span>context kind</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span>
  13. <span>Thanks</span> <span> </span> <span>for</span> <span> </span> <span>using</span> <span> kind</span> <span>!</span> <span> </span> <span>😊</span>

查看集群状态

  1. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl </span> <span>get</span> <span> node</span>
  2. <span>NAME STATUS ROLES AGE VERSION</span>
  3. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>NotReady</span> <span> control</span> <span>-</span> <span>plane </span> <span>3m46s</span> <span> v1</span> <span>.</span> <span>28.0</span>
  4. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span> <span>-</span> <span>worker </span> <span>NotReady</span> <span> </span> <span><none></span> <span> </span> <span>3m17s</span> <span> v1</span> <span>.</span> <span>28.0</span>
  5. <span>pod</span> <span>状态</span>
  6. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl </span> <span>get</span> <span> pod </span> <span>-</span> <span>n kube</span> <span>-</span> <span>system</span>
  7. <span>NAME READY STATUS RESTARTS AGE</span>
  8. <span>coredns</span> <span>-</span> <span>5dd5756b68</span> <span>-</span> <span>l94jm </span> <span>0</span> <span>/</span> <span>1</span> <span> </span> <span>Pending</span> <span> </span> <span>0</span> <span> </span> <span>3m58s</span>
  9. <span>coredns</span> <span>-</span> <span>5dd5756b68</span> <span>-</span> <span>psm7p </span> <span>0</span> <span>/</span> <span>1</span> <span> </span> <span>Pending</span> <span> </span> <span>0</span> <span> </span> <span>3m58s</span>
  10. <span>etcd</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>4m12s</span>
  11. <span>kube</span> <span>-</span> <span>apiserver</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>4m11s</span>
  12. <span>kube</span> <span>-</span> <span>controller</span> <span>-</span> <span>manager</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>4m12s</span>
  13. <span>kube</span> <span>-</span> <span>proxy</span> <span>-</span> <span>bln4n </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>3m50s</span>
  14. <span>kube</span> <span>-</span> <span>proxy</span> <span>-</span> <span>l4k49 </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>3m59s</span>
  15. <span>kube</span> <span>-</span> <span>scheduler</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>4m16s</span>

切换集群

  • 1.24集群版本默认cni插件
  • 1.28集群版本不使用默认插件

接下来可以通过 kubectl config use-context xx_name快速切换集群

首先获取Cluster名称,我现在在k8s 1.28版本,现在我切换到1.24.15版本

  1. <span>root@abcdocker</span> <span>:~#</span> <span> kind </span> <span>get</span> <span> clusters</span>
  2. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span>
  3. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span>

切换到abcdocker-kind-demo集群

  1. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl config </span> <span>use</span> <span>-</span> <span>context kind</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span>
  2. <span>Switched</span> <span> to context </span> <span>"kind-abcdocker-kind-demo"</span> <span>.</span>
  3. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl </span> <span>get</span> <span> node</span>
  4. <span>NAME STATUS ROLES AGE VERSION</span>
  5. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>Ready</span> <span> control</span> <span>-</span> <span>plane </span> <span>43m</span> <span> v1</span> <span>.</span> <span>24.15</span>
  6. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>worker </span> <span>Ready</span> <span> </span> <span><none></span> <span> </span> <span>43m</span> <span> v1</span> <span>.</span> <span>24.15</span>

切换到abcdocker-kind-demo1集群

  1. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl config </span> <span>use</span> <span>-</span> <span>context kind</span> <span>-</span> <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span>
  2. <span>Switched</span> <span> to context </span> <span>"kind-abcdocker-kind-demo1"</span> <span>.</span>
  3. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl </span> <span>get</span> <span> node</span>
  4. <span>NAME STATUS ROLES AGE VERSION</span>
  5. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>NotReady</span> <span> control</span> <span>-</span> <span>plane </span> <span>36m</span> <span> v1</span> <span>.</span> <span>28.0</span>
  6. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo1</span> <span>-</span> <span>worker </span> <span>NotReady</span> <span> </span> <span><none></span> <span> </span> <span>36m</span> <span> v1</span> <span>.</span> <span>28.0</span>

测试集群

  1. <span>cat</span> <span><<</span> <span>EOF </span> <span>|</span> <span> kubectl apply </span> <span>-</span> <span>f </span> <span>-</span>
  2. <span>apiVersion</span> <span>:</span> <span> apps</span> <span>/</span> <span>v1</span>
  3. <span>kind</span> <span>:</span> <span> </span> <span>Deployment</span>
  4. <span>metadata</span> <span>:</span>
  5. <span> name</span> <span>:</span> <span> nginx</span>
  6. <span>spec</span> <span>:</span>
  7. <span> selector</span> <span>:</span>
  8. <span> matchLabels</span> <span>:</span>
  9. <span> app</span> <span>:</span> <span> nginx</span>
  10. <span> </span> <span>template</span> <span>:</span>
  11. <span> metadata</span> <span>:</span>
  12. <span> labels</span> <span>:</span>
  13. <span> app</span> <span>:</span> <span> nginx</span>
  14. <span> spec</span> <span>:</span>
  15. <span> containers</span> <span>:</span>
  16. <span> </span> <span>-</span> <span> image</span> <span>:</span> <span> nginx</span> <span>:</span> <span>alpine</span>
  17. <span> name</span> <span>:</span> <span> nginx</span>
  18. <span> ports</span> <span>:</span>
  19. <span> </span> <span>-</span> <span> containerPort</span> <span>:</span> <span> </span> <span>80</span>
  20. <span>---</span>
  21. <span>apiVersion</span> <span>:</span> <span> v1</span>
  22. <span>kind</span> <span>:</span> <span> </span> <span>Service</span>
  23. <span>metadata</span> <span>:</span>
  24. <span> name</span> <span>:</span> <span> nginx</span>
  25. <span>spec</span> <span>:</span>
  26. <span> selector</span> <span>:</span>
  27. <span> app</span> <span>:</span> <span> nginx</span>
  28. <span> type</span> <span>:</span> <span> </span> <span>NodePort</span>
  29. <span> ports</span> <span>:</span>
  30. <span> </span> <span>-</span> <span> protocol</span> <span>:</span> <span> TCP</span>
  31. <span> port</span> <span>:</span> <span> </span> <span>80</span>
  32. <span> targetPort</span> <span>:</span> <span> </span> <span>80</span>
  33. <span> nodePort</span> <span>:</span> <span> </span> <span>30001</span>
  34. <span>---</span>
  35. <span>apiVersion</span> <span>:</span> <span> v1</span>
  36. <span>kind</span> <span>:</span> <span> </span> <span>Pod</span>
  37. <span>metadata</span> <span>:</span>
  38. <span> name</span> <span>:</span> <span> busybox</span>
  39. <span> </span> <span>namespace</span> <span>:</span> <span> </span> <span>default</span>
  40. <span>spec</span> <span>:</span>
  41. <span> containers</span> <span>:</span>
  42. <span> </span> <span>-</span> <span> name</span> <span>:</span> <span> busybox</span>
  43. <span> image</span> <span>:</span> <span> abcdocker9</span> <span>/</span> <span>centos</span> <span>:</span> <span>v1</span>
  44. <span> command</span> <span>:</span>
  45. <span> </span> <span>-</span> <span> sleep</span>
  46. <span> </span> <span>-</span> <span> </span> <span>"3600"</span>
  47. <span> imagePullPolicy</span> <span>:</span> <span> </span> <span>IfNotPresent</span>
  48. <span> restartPolicy</span> <span>:</span> <span> </span> <span>Always</span>
  49. <span>EOF</span>

查看服务状态

  1. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl </span> <span>get</span> <span> pod</span> <span>,</span> <span>svc</span>
  2. <span>NAME READY STATUS RESTARTS AGE</span>
  3. <span>pod</span> <span>/</span> <span>busybox </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>2m27s</span>
  4. <span>pod</span> <span>/</span> <span>nginx</span> <span>-</span> <span>6fb79bc456</span> <span>-</span> <span>st6qk </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>2m27s</span>
  5. <span>NAME TYPE CLUSTER</span> <span>-</span> <span>IP EXTERNAL</span> <span>-</span> <span>IP PORT</span> <span>(</span> <span>S</span> <span>)</span> <span> AGE</span>
  6. <span>service</span> <span>/</span> <span>kubernetes </span> <span>ClusterIP</span> <span> </span> <span>10.96</span> <span>.</span> <span>0.1</span> <span> </span> <span><none></span> <span> </span> <span>443</span> <span>/</span> <span>TCP </span> <span>48m</span>
  7. <span>service</span> <span>/</span> <span>nginx </span> <span>NodePort</span> <span> </span> <span>10.96</span> <span>.</span> <span>93.229</span> <span> </span> <span><none></span> <span> </span> <span>80</span> <span>:</span> <span>30001</span> <span>/</span> <span>TCP </span> <span>2m28s</span>

测试dns

  1. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl </span> <span>exec</span> <span> </span> <span>-</span> <span>ti busybox </span> <span>--</span> <span> nslookup kubernetes</span>
  2. <span>Server</span> <span>:</span> <span> </span> <span>10.96</span> <span>.</span> <span>0.10</span>
  3. <span>Address</span> <span>:</span> <span> </span> <span>10.96</span> <span>.</span> <span>0.10</span> <span>#53</span>
  4. <span>Name</span> <span>:</span> <span> kubernetes</span> <span>.</span> <span>default</span> <span>.</span> <span>svc</span> <span>.</span> <span>cluster</span> <span>.</span> <span>local</span>
  5. <span>Address</span> <span>:</span> <span> </span> <span>10.96</span> <span>.</span> <span>0.1</span>

测试nginx nodeport

nginx nodeport>nginx需要进入到node容器

  1. <span>root@abcdocker</span> <span>:~#</span> <span> kubectl </span> <span>get</span> <span> node</span>
  2. <span>NAME STATUS ROLES AGE VERSION</span>
  3. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>control</span> <span>-</span> <span>plane </span> <span>Ready</span> <span> control</span> <span>-</span> <span>plane </span> <span>53m</span> <span> v1</span> <span>.</span> <span>24.15</span>
  4. <span>abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>worker </span> <span>Ready</span> <span> </span> <span><none></span> <span> </span> <span>52m</span> <span> v1</span> <span>.</span> <span>24.15</span>
  5. <span>root@abcdocker</span> <span>:~#</span> <span> docker </span> <span>exec</span> <span> </span> <span>-</span> <span>it abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>control</span> <span>-</span> <span>plane bash</span>
  6. <span>root@abcdocker</span> <span>-</span> <span>kind</span> <span>-</span> <span>demo</span> <span>-</span> <span>control</span> <span>-</span> <span>plane</span> <span>:/#</span>