在Amazon EKS教程中,了解Kubernetes #02部署应用程序

首先

这篇文章是以下内容的续篇。

    Amazon EKS のチュートリアルで Kubernetes を理解する #01 クラスタ作成

因为上次创建了k8s集群,所以我将在其中部署应用程序。

之前的条件

    k8sのクラスタが作成されており、ワーカーノードが稼働していること。

教程:留言簿

使用Kubernetes的示例应用程序Guestbook,该应用程序由前端界面和Redis(主从配置)组成。

请参阅以下页面以获取留言簿的详细信息。

    https://github.com/kubernetes/examples/blob/master/guestbook-go/README.md

服务的注册

由于Pod和Service的定义文件已经在上述的GitHub上注册过了,所以我们将使用它们来进行部署。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-controller.json
replicationcontroller/redis-master created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-service.json
service/redis-master created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-controller.json
replicationcontroller/redis-slave created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-service.json
service/redis-slave created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-controller.json
replicationcontroller/guestbook created

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-service.json
service/guestbook created

当您查看已注册服务的状态时,情况如下。

$ kubectl get services -o wide
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)          AGE   SELECTOR
guestbook      LoadBalancer   10.100.197.132   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx.us-west-2.elb.amazonaws.com   3000:31789/TCP   10s   app=guestbook
kubernetes     ClusterIP      10.100.0.1       <none>                                                                    443/TCP          63m   <none>
redis-master   ClusterIP      10.100.21.24     <none>                                                                    6379/TCP         43s   app=redis,role=master
redis-slave    ClusterIP      10.100.203.61    <none>                                                                    6379/TCP         26s   app=redis,role=slave

您可以确认已注册的服务,但只有留言板服务是公开到外部的设置。

另外,您可以使用kubectl get命令来查看Pod和Node的信息。
由于将Guestbook应用部署到集群中,可以看到Guestbook容器有3个运行(副本:3),Redis有一个主容器(副本:1)和两个从容器(副本:2)正在运行。

$ kubectl get pod,node
NAME                     READY   STATUS    RESTARTS   AGE
pod/guestbook-4gp4c      1/1     Running   0          13m
pod/guestbook-8d7k2      1/1     Running   0          13m
pod/guestbook-xfvck      1/1     Running   0          13m
pod/redis-master-q8568   1/1     Running   0          25m
pod/redis-slave-4g8c8    1/1     Running   0          14m
pod/redis-slave-xwjtn    1/1     Running   0          14m

NAME                                                STATUS   ROLES    AGE   VERSION
node/ip-192-168-0-148.us-west-2.compute.internal    Ready    <none>   73m   v1.14.7-eks-1861c5
node/ip-192-168-61-197.us-west-2.compute.internal   Ready    <none>   73m   v1.14.7-eks-1861c5
node/ip-192-168-88-66.us-west-2.compute.internal    Ready    <none>   73m   v1.14.7-eks-1861c5

另外,通过使用kubectl describe命令,可以查看Pod的配置和运行状态等详细信息。

$ kubectl describe pod guestbook

以”Web页面的显示”为中文本地化的方式来重新表达。

请将先前使用”kubectl get services -o wide”命令确认的内容复制并保存guestbook的EXTERNAL-IP部分。
此外,从PORT(S)部分可以看出,该应用程序是在3000端口上进行公开。

因此,只需打开浏览器,在以下的URL上进行访问,即可显示Guestbook的界面。
通过这样做,我们可以确认已在Kubernetes上部署的应用程序正在运行。

http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx.us-west-2.elb.amazonaws.com:3000
amazon-eks-guestbook01.jpg

总结

这次我们尝试在k8s集群中部署应用程序。
通过k8s生成的LoadBalancer,我们能够访问到具备冗余配置的应用程序。

我不会在这里解释Pod和Service的定义文件的内容,但是当您实际部署内容并检查定义的内容时,我认为理解定义的内容也会更容易。

接下来,我们将尝试对k8s集群进行监控。

    Amazon EKS のチュートリアルで Kubernetes を理解する #03 メトリクス&ダッシュボード
bannerAds