在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

总结
这次我们尝试在k8s集群中部署应用程序。
通过k8s生成的LoadBalancer,我们能够访问到具备冗余配置的应用程序。
我不会在这里解释Pod和Service的定义文件的内容,但是当您实际部署内容并检查定义的内容时,我认为理解定义的内容也会更容易。
接下来,我们将尝试对k8s集群进行监控。
- Amazon EKS のチュートリアルで Kubernetes を理解する #03 メトリクス&ダッシュボード