Azure Kubernetes Service 入门
<h2>一,引言</h2><p> 上一节,我们使用Azure CLI 创建了Azure Resource Group 和 Azure Container Registry 资源,并且将本地的一个叫 “k8s.net.demo”的 images 推送到远端创建的私有的Docker Image Repo,今天接着上一篇我们学习一下Azure Kubernetes 服务,通过 Azure Portal 创建 Azure Kubernetes Service,并且希望将 Push 上去的Docker Image 部署到Azure Kubernetes 集群中</p>
<p> Azure Kubernetes Service 简称AKS,它托管的Kubernetes 环境,可以使我们在Azure中很轻松的部署和管理容器话的应用程序。AKS环境启用了自动更新,自愈和自动缩放等功能。Kubernetes 的集群主机由Azure 免费管理,创建AKS服务的时候,我们可以将集群主机交由Aure进行托管,另外一种是我们在创建的时候,将我们自己创建好的VMSS挂载到AKS服务上。我们只需要为节点所在其上运行的VM付费即可。</p>
<p> 接下来,我们看看当前基础设施架构图</p>
<p>--------------------我是分割线--------------------</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821162016094-1209751570.png" alt="" loading="lazy"></p>
<p>--------------------我是分割线--------------------</p>
<p>Azure Command Line 创建 Azure Container Registry 服务</p>
<h2>二,正文</h2>
<h3>1,创建Azure Kubernetes Service</h3>
<p>Azure Portal 点击 “Create a resource”,在搜索框中输入 “Kubernetes Service”,进行搜索,点击 “Create”</p>
<h3><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821162756487-841604574.png" alt="" loading="lazy"></h3>
<p>Resource group 选择创建一个新的 “Web_Test_AKS_RG”</p>
<p>Kubernetes cluster name:“cnbateblogwebCluster”</p>
<p>Region 选择:“East Asia”</p>
<p>Node count 改为 “1”</p>
<p>点击 “Next:Node pools >”,进行设置节点池等信息</p>
<p> <img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821163432487-763274028.png" alt="" loading="lazy"></p>
<p>我们如果想增加多个工作节点的话,可以选择 点击 “Add node pool”</p>
<p>VM scale sets 选择:“Enabled”</p>
<p>点击 “Next:Authentication >”</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821164257812-369153269.png" alt="" loading="lazy"></p>
<p>关于 “Authentication method” 我们选择默认的 “Service principal”</p>
<p>其他的都选择默认选项,点击 “Next:Networking >”</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821164719087-606608298.png" alt="" loading="lazy"></p>
<p> </p>
<p> 接下来我们进行配置网络信息,我们可以选择默认,也可以选择自定义的网络设计</p>
<p>Network configuration 选择:“Advanced”</p>
<p>Virtual network 选择创建新的,如下图所示</p>
<p>Name:“CnBateBlogWeb_VNET”</p>
<p>Address space:“10.0.0.0/8”</p>
<p>Subnet name:“CnBateBlogWeb_AKS_SubNET”</p>
<p>点击 “OK”,继续配置其他信息</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821165559902-475413807.png" alt="" loading="lazy"></p>
<p>Kubernetes service address range:“10.0.2.0/24”</p>
<p>Kubernetes DNS service IP address:“10.0.2.10”</p>
<p>其他的配置选择默认即可,点击“Next:Integrations >”</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821170003225-1958671796.png" alt="" loading="lazy"></p>
<p>开启容器监控,继续点击 “Review + create”,进行创建前的预校验</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821170100612-904614268.png" alt="" loading="lazy"></p>
<p>我们可以看到 验证已通过,点击 “Create” 进行创建 AKS 服务</p>
<p> <img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821170253533-1816736347.png" alt="" loading="lazy"></p>
<p>创建成功后,我们可以跳转到该资源</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821172206241-225376523.png" alt="" loading="lazy"></p>
<p> <img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821172209264-713468267.png" alt="" loading="lazy"></p>
<h3>2,为Azure Kubernetes Service 配置 Azure Container Registry 集成</h3>
<p>找到上次创建好的叫 “cnbateblogwebACR” 的 Azure Container Registry</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821175435537-1922875946.png" alt="" width="1214" height="456" loading="lazy"></p>
<p>点击 “Access control(IAM)” ,选择 “Role assignments”,点击 “Add”,添加一个角色分配</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821175847553-1309809514.png" alt="" loading="lazy"></p>
<p>Role 选择:“AcrPull”</p>
<p>Assign access to 选择:“Azure AD user,group,or service principal”</p>
<p>Select 选择刚刚创建AKS 的时候,在AD中自动注册的App </p>
<p>我们点击 ”Save“,进行保存操作</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821182204900-1683901078.png" alt="" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821183354705-2079098338.png" alt="" loading="lazy">最后一步,我们使用kubectl连接到集群上</p>
<div class="cnblogs_code">
<pre>az aks get-credentials --resource-group Web_Test_AKS_RG --name cnbateblogwebCluster</pre>
</div>
<p> </p>
<h3><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821212519149-597388834.png" alt="" loading="lazy"></h3>
<h3>3,Azure Portal 中创建pod</h3>
<p>Azure Portal 中找到创建好的 aks 服务,选择 “Workloads(preview)” ,切换到 “Pods” 的Tab页,我们可以看到一些默认的pod,当然这些pod的命名空间都是kube-system,不是我们需要的default的命令空间。</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821212824521-1056119998.png" alt="" loading="lazy"></p>
<p> </p>
<p>同时,我们也可以通过kubectl 客户端命令进行查看</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821213415640-600155848.png" alt="" loading="lazy"></p>
<p> </p>
<p>我们点击 “+Add ” 进行创建pod信息</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821213533842-922333169.png" alt="" loading="lazy"></p>
<p> </p>
<p>输入创建 pod 的描述文件,点击 “Add” 按钮</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821214120511-543579652.png" alt="" loading="lazy"></p>
<p> </p>
<p>完整yaml文件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">apiVersion: v1
kind: Pod
metadata:
name: k8s-net-demo
labels:
app: k8s-net-demo
spec:
containers:
- name: k8s-net-demo
image: cnbateblogwebacr.azurecr.io/k8s.net.demo:v1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80</span></pre>
</div>
<p> </p>
<p>回到Azure Portal 中,我们可以看到已经创建好的 k8s-net-demo 的pod 已经创建好了,状态也是 running</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821214714264-1745981179.png" alt="" loading="lazy"></p>
<p> </p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821214819138-35963663.png" alt="" loading="lazy"></p>
<p> </p>
<h3>4,访问 pod 中的容器</h3>
<p> 想要与pod 进行通信,可以通过 kubectl port-forward 配置端口转发</p>
<div class="cnblogs_code">
<pre>kubectl port-forward k8s-net-demo <span style="color: rgba(128, 0, 128, 1)">8080</span>:<span style="color: rgba(128, 0, 128, 1)">80</span></pre>
</div>
<p> </p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821215331317-309349954.png" alt="" loading="lazy"></p>
<p> </p>
<p> 浏览器访问 http://127.0.0.1:8080,如下图所示</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821215554524-568669826.png" alt="" loading="lazy"></p>
<p> </p>
<p>至此,我们成功的将 pod 跑起来了</p>
<h3>5,使用service描述文件将 Pod 进行暴露</h3>
<p>选择“Services and ingresses(preview)”,点击 “Add”</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821221802103-124050812.png" alt="" loading="lazy"></p>
<p> </p>
<p> 我们继续使用 service 藐视文件进行创建,这次 Kind(定义Kubernetes资源类型为Service)的类型为 “Service”,type 为 “LoadBalancer”</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821222007317-1310812336.png" alt="" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821221557909-1388740799.png" alt="" loading="lazy"></p>
<p> </p>
<p>我们可以看到 名字叫 “k8s-net-service1” 的 Type 为 LoadBalancer,External-ip 为 52.184.83.143 cluster-ip 为 10.0.2.134</p>
<p>我们可以在集群内部使用 10.0.2.134:30000,如果是在集群外部,可以使用 52.184.83.143:80 进行访问</p>
<p>浏览器访问 http://52.184.83.143:80,效果如下显示</p>
<p><img src="https://img2020.cnblogs.com/blog/1996262/202008/1996262-20200821223517001-65770041.png" alt="" loading="lazy"></p>
<p> </p>
<p>bingo,撒花,今天的分析到此完结。</p>
<h2>三,结尾</h2>
<p> 本文,我们创建了AKS服务,并且使用在Azure Portal 上创建属于自己的 pod,并且使用配置端口转发供外界访问,到最后的到了 Service,基本上大家对K8s熟悉的话,上手AKS是非常快的,今天基本上演示了对AKS有了一个基本的认指,下一篇,我们具体讲解以下本篇中使用的一个YAML配置,以及暴露Service的时候,关于LoadBalancer的一些问题。</p>
<p>作者:Allen </p>
<p>版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。</p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
作者:Allen
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。<br><br>
来源:https://www.cnblogs.com/AllenMaster/p/13541680.html
頁:
[1]