关于kubernetes:在-K8S-中部署一个应用-上

3次阅读

共计 2075 个字符,预计需要花费 6 分钟才能阅读完成。

自身在 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 来拜访这个服务了

明天就到这里,学习所得,若有偏差,还请斧正

欢送点赞,关注,珍藏

敌人们,你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

我是 阿兵云原生,欢送点赞关注珍藏,下次见~

正文完
 0