在 K8S 中部署一个应用 上

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 在 K8S 中部署一个应用 上

本身在 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 部分,刚开始是显示 ,不过不要着急,我们稍微等 1 分钟的样子, K8S 就会给我们分配好这个服务的 外部 IP 了

当有了明确的外部 IP, 那么外部就可以通过该 IP 来访问我们的内部服务了

当然,如果你现在在使用的还是 minikube ,也是可以这样来玩的

因为 minikube 上面是单节点集群的,我们可以敲入指令:minikube service kubia-http

就可以看到如上信息,我们就可以通过这个 ip 来访问这个服务了

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

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

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

更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
存储 Kubernetes 持续交付
介绍一下Kubernetes的应用场景
【10月更文挑战第18天】介绍一下Kubernetes的应用场景。
241 3
|
19天前
|
存储 Kubernetes 容器
K8S部署nexus
该配置文件定义了Nexus 3的Kubernetes部署,包括PersistentVolumeClaim、Deployment和服务。PVC请求20Gi存储,使用NFS存储类。Deployment配置了一个Nexus 3容器,内存限制为6G,CPU为1000m,并挂载数据卷。Service类型为NodePort,通过30520端口对外提供服务。所有资源位于`nexus`命名空间中。
|
29天前
|
人工智能 Kubernetes 安全
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
62 13
|
28天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
2月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
2月前
|
存储 运维 Kubernetes
K8s业务迁移最佳实践: 灵活管理资源备份与调整策略,实现高效简便的应用恢复
在当今快速变化的云原生领域,Kubernetes(K8s)集群的运维面临着诸多挑战,其中灾备与业务迁移尤为关键。ACK备份中心支持丰富的资源调整策略,在数据恢复阶段即可自动适配目标集群环境,确保业务无缝重启。
|
2月前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
2月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
2月前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
70 1
|
3月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景

热门文章

最新文章