CentOS 7

CentOS7下的各种应用


第1章 先把kubernetes跑起来

<h3>第 1 章</h3> <p>先把kubernetes跑起来 kubernetes是google是2014年发布的一个开源项目。 据说Google的数据中心里运行着20多个亿的容器。而且Google十年前就开始使用容器技术了。</p> <h4>1.1 先跑起来</h4> <pre><code>按照一贯的学习思路,我们会在最短时间内搭建起一个可用系统,这样才能够尽快建立起对学习对象的感性认识。 先把玩起来,快速了解基本概念、功能和使用场景。 越是门槛高的知识,就越需要有这么一个最小的可用系统。如果直接上来就学习理论知识和概念,很容易从入门到放弃。</code></pre> <p>kubernetes.io开发了一个交互式教程: <a href="https://kubernetes.io/docs/tutorials/kubernetes-basics/">https://kubernetes.io/docs/tutorials/kubernetes-basics/</a> <a href="https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/">https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/</a> 教程菜单:</p> <h4>1.2创建kubernetes集群</h4> <p>Create a Cluster --&gt;interactive Tutorial-Creating a Cluster, 下一步,下一步,好多步后,start。。。 左边是菜单,右边是Terminal 执行命令:</p> <pre><code class="language-bash">kubectl get nodes hostname kubectl cluster-info 查看集群信息</code></pre> <h4>1.3部署应用</h4> <p>执行命令</p> <pre><code class="language-bash">kubectl run kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080</code></pre> <p>这里通过kubectl run 部署了一个应用,命名为kubernetes-bootcamp,dockker镜像通过image指定。--port设置应用对外服务的端口。 这里的Deploymenetes是kubernetes的术语,可以理解为应用。 kubernetes还有一术语pod。 pod是容器的集合,通常会将紧密相关的一组容器放到一个pod中,同一个pod中的所有容器共享IP地址和Portpwuj ,也就是说它们是一个network namespace中。 pod是kubernetes调度的最小单位,同一个pod中的容器始终被一起调度。 查看当前pod</p> <pre><code class="language-bash">kubectl get pods</code></pre> <h4>1.4 访问应用</h4> <p>默认情况下,所有pod只能在集群内部访问。为了能够从外部访问应用,我们需要将容器的8080映射到节点的端口上。 将容器的8080映射到节点的端口上,执行如下命令:</p> <pre><code class="language-bash">kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080</code></pre> <p>查看应用被映射到节点上哪个端口</p> <pre><code class="language-bash">kubectl get services</code></pre> <p>端口已经映射到host01的32320端口,端口号是随机分配的。可以执行如下命令访问:</p> <pre><code class="language-bash">curl host01:32320</code></pre> <h4>1.5 Scale应用</h4> <p>默认情况下应用只会运行一个副本。</p> <pre><code class="language-bash">kubectl get deployments 查看副本数</code></pre> <p>将副本增加到3个</p> <pre><code class="language-bash">kubectl scale deployments/kubernetes-bootcamp --replicas=3</code></pre> <p>查看当前pod数量</p> <pre><code class="language-bash">kubectl get pods</code></pre> <p>通过curl访问应用,可以看到每次请求发道到不同的Pod,3个副本轮询处理,实现负载均衡。</p> <h4>1.6 滚动更新</h4> <p>当前应用使用image版本为v1,升级到v2</p> <pre><code class="language-bash">kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2</code></pre> <p>通过kubectl get pods可以观察滚动更新的过程:v1的pod被逐个删除,同时启动了新的v2 pod. 退回V1版本</p> <pre><code class="language-bash">kubectl rollout undo deployments/kubernetes-bootcamp</code></pre>

页面列表

ITEM_HTML