- 前提条件
0.0 环境准备
0.1 安装docker
0.2 安装k8s - 在Kubernetes上运行第一个应用
- 部署Node.js应用(最简单的方式是kubectl run命令,此命令无需JSON或YAML文件)(kubia是pod的name,–image指定要运行的容器镜像,–port告诉Kubernetes应用正在监听的端口)
kubectl run kubia --image=nuptaxin/kubia --port=8080
- 介绍pod(k8s不直接处理单个容器,它使用多个共存容器的理念,这组容器就叫做pod)
- 列出pod(k8s中不能列出单个容器,因为它们不是独立的k8s对象,但是可以列出pod)
kubectl get pods
- 查看pod的更多信息
kubectl describe pod kubia
- 部署Node.js应用(最简单的方式是kubectl run命令,此命令无需JSON或YAML文件)(kubia是pod的name,–image指定要运行的容器镜像,–port告诉Kubernetes应用正在监听的端口)
- 访问Web应用(每个pod都有自己的IP地址,但是地址是集群内部的,不能从外部访问。需要通过服务对象公开它,创建一个特殊的LoadBalancer类型的服务)
- 创建一个服务对象(type指定服务类型,name指定服务名,external-ip为服务器的内网ip)
kubectl expose pod kubia --port=8080 --target-port=8080 --type=LoadBalancer --name kubia-http --external-ip 172.26.166.148
- 列出服务(kubia-http服务,刚开始没有外部IP地址,因为k8s运行云基础设施创建负载均衡需要一段时间。负载均衡启动后,会显示服务的外部IP地址。等一会再执行一次)
kubectl get services
- 访问服务(在k8s中,pod名称将变成主机名,此处与直接在docker中部署不同)
http://8.130.177.188:8080
- 删除服务
kubectl delete svc kubia-http
- 创建一个服务对象(type指定服务类型,name指定服务名,external-ip为服务器的内网ip)
- 水平伸缩应用
- 创建一个deployment(新版本不支持命令行创建ReplicationController),运行指定镜像
kubectl create deployment kubia-deploy --image=nuptaxin/kubia --port=8080
- 列出pod(会显示上一步中的pod,并且已经是running状态)
kubectl get pods
- 列出deployment(显示1中的设置对应名称的deployment)
kubectl get deployment
- 增加pod副本为3
kubectl scale deployment/kubia-deploy --replicas=3
- 确认副本数(可以通过2中pod数量或者3中3/3确认)
kubectl get pods
- 对deployment创建一个服务对象
kubectl expose deployment kubia-deploy --port=8080 --target-port=8080 --type=LoadBalancer --name kubia-deploy-http --external-ip 172.26.166.148
- 访问应用,并查看每次hostname是否相同(可能要刷很久才可能变更,但是通过scale调整副本数量或者浏览器打开无痕模式访问可以比较容易的发现变化)
http://8.130.177.188:8080
- 删除deployment会将其创建的所有pod一起删除(service不会删除)
kubectl delete deployment kubia-deploy
kubectl get deployment
kubectl get po
kubectl get service
- 删除服务
kubectl delete svc kubia-deploy-http
- 创建一个deployment(新版本不支持命令行创建ReplicationController),运行指定镜像
- 查看应用运行在哪个节点上
- 列出pod时显示pod IP和pod的节点
kubectl get pods -o wide
- 使用describe查看pod的其他细节
kubectl describe pod kubia
- 列出pod时显示pod IP和pod的节点
- 资源清理
kubectl delete pod kubia