自身在 K8S 中部署一个利用是须要写 yaml 文件的,咱们这次简略部署,通过拉取网络上的镜像来部署利用,会用图解的形式来分享一下,过程中都产生了什么
简略部署一个程序
咱们能够通过 kubectl run
的形式来简略部署一个利用,当初咱们先不关怀外面的 yaml 构造和具体的配置,先运行起来,看看成果
kubectl run mykubia --image=luksa/kubia --port=9999 --generator=run/v1
,执行该命令,就能够创立一个容器,并运行起来
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
mykubia 1/1 Running 0 63s
能够看到 咱们的 mykubia 利用曾经运行起来的,咱们能够通过命令 kubectl logs -f mykubia
查看日志
在上命令中,解释一下:
--image=luksa/kubia
指定一个要运行的容器镜像
--port=9999
指的是咱们指定服务运行的端口号是 9999
--generator=run/v1
加上这个标记指的是 让 k8s 集群创立一个 ReplicationController,而不是一个 Deployment
pod 是什么
在 K8S 中,一个 pod 是一组严密相干的容器 ,它们总是运行在 同一个工作节点下面 ,他们有着 同样的 Linux 命名空间
每一个 pod 就像是一个独立的逻辑机器,他有这些资源:
- 本人的 IP
- 主机名
- 过程
- 可能运行一个独立的应用程序
这外面运行的应用程序能够是单过程的,运行在单个容器中,每一个过程都会在本人的容器运行
如上图,每一个 pod 都会有本人的 IP,一个 pod 会蕴含 1 个或者多个 容器,多个 pod 也会散布在不同的工作节点下面
从执行命令到容器运行背地都产生了哪些动作?
从程序员敲入命令到理论服务运行能够简略的分成 8 个步骤,如上图:
- 1
构建镜像,必须先要把 镜像推送到 Docker Hub 下面,这一步是 执行 docker push luksa/kubia
- 2
docker 服务器将镜像推送到 docker hub 中
- 3
kubectl 收到指令,kubectl run mykubia --image=lukia/kubia --port=9999
- 4
kubectl 想 REST API 服务器发送申请,申请调度
- 5
主节点收到申请后,创立 Pod,并调度到工作节点
- 6
工作节点收到主节点的调度告诉
- 7
工作节点 应用 kubelet 指令通知本人环境中 docker 要运行镜像了
- 8
工作节点的 docker 于是就向 Docker Hub 拉取镜像,运行
最终,出现进去的就是,咱们通过指令 kubectl get pods 的时候,就能够看到咱们的 pod 在运行了
内部如何拜访 pod 中的服务?
咱们如何在内部拜访在 pod 运行中的服务呢?
咱们能够通过指令:kubectl get pods -o wide
查看更多详细信息
尽管说每一个 pod 都有一个本人的 IP,然而这个 IP 只有在集群外部才能够拜访的,在内部是没有方法拜访的
咱们在外部拜访外部必定是没有问题的
curl 一下 这个 ip 例如,curl 172.18.0.6:8080
要从内部拜访外部的 pod 中的服务,咱们能够创立一个非凡的 LoadBalancer 类型的服务(service)
创立一个服务对象
咱们创立的这个服务对象,内部就能够拜访到外部 pod 中的服务了
咱们必须是要创立 LoadBalancer 类型的服务才能够,如果咱们创立 ClusterIP 类型的服务也是不行的,
ClusterIP 类型的服务 是 K8S 外部默认的类型,默认只能在外部相互拜访,内部是无法访问的
咱们能够执行如下指令:
kubectl expose rc mykubia --type=LoadBalancer --name kubia-http
- rc mykubia
指的是要通知 k8s 咱们之前创立的 ReplicationController
此处的 rc 是 ReplicationController 的缩写
- –type=LoadBalancer
执行类型为 LoadBalancer,指定为 LoadBalancer 类型后,将会创立一个内部的负载平衡服务,内部能够通过这个服务的 ip 来拜访到外部的 pod
查看服务
咱们能够通过 kubectl get services
来查看服务列表
查看服务列表的时候,咱们能够看到 EXTERNAL-IP 局部,刚开始是显示 <pending>,不过不要焦急,咱们略微等 1 分钟的样子,K8S 就会给咱们调配好这个服务的 内部 IP 了
当有了明确的内部 IP,那么内部就能够通过该 IP 来拜访咱们的外部服务了
当然,如果你当初在应用的还是 minikube,也是能够这样来玩的
因为 minikube 下面是单节点集群 的,咱们能够敲入指令:minikube service kubia-http
就能够看到如上信息,咱们就能够通过这个 ip 来拜访这个服务了
明天就到这里,学习所得,若有偏差,还请斧正
欢送点赞,关注,珍藏
敌人们,你的反对和激励,是我保持分享,提高质量的能源
好了,本次就到这里
技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。
我是 阿兵云原生,欢送点赞关注珍藏,下次见~