2.3.1 部署 Node.js 应用
$ kubectl run mysql2 --image=mysql --port=3307 replicationcontroller "kubia" created
介绍 pod
多个共存容器: pod


列出 pod
不能列出单个容器, 因为它们不是独立的 Kubernetes 对象, 但是可以列出 pod.
**
$ kubectl get pods
kubectl run 后很快就返回了, 其实是在后台拉镜像并运行.
$ kubectl describe pod
幕后发生的事情
两个必须的步骤:
- 构建镜像并推送到 Docker Hub
- API -> RReplicationController 对象 -> pod -> docker pull
调度 (scheduling): 将 pod 分配给一个节点.

2.3.2 访问 Web 应用
pod 的 ip 是内网, 创建 LoadBalancer 才能从外部访问内网.
创建一个服务对象
$ kubectl expose rc kubia --type=LoadBalancer --name kubia-http
列出服务
$ kubectl get servies
注意:
- Minikube 不支持 LoadBalancer 类型的服务
使用外部 IP 访问服务
$ curl 104.155.74.57:8080
2.3.3 系统的逻辑部分
ReplicationController, pod 和服务是如何组合在一起的

pod 和它的容器
- pod 可以包含任意数量的容器
- pod 有自己独立的私有 ip 地址和主机名
ReplicationController 的角色
- 确保始终存在一个运行中的 pod 实例
- 用于复制 pod 并让它们保持运行 (监控运行数)
为什么需要服务
kubian-http
- 将客户端访问的 ip 与 pod 的 ip 解耦
2.3.4 水平伸缩应用
$ kubectl get replicationcontrollers
增加期望的副本数

声明式.
查看扩容的结果
- 应用本身支持水平伸缩
当切换到服务请求切换到所有三个 pod 上
自动负载均衡:

可视化系统的新状态

2.3.5 查看应用运行在哪个节点上
列出 pod 时显示 pod IP 和 pod 的节点
$ kubectl get pods -o wide
使用 kubectl describe 查看 pod 的其他细节

