您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

时间:2023-11-06 14:37:24  来源:今日头条  作者:玄明Hanko

k8s发布应用的两种方式:

  • kube.NETes-dashboard
  • kubectl命令行

一、Dashboard方式

配置部署:包含应用名称、容器镒、pod数量、Service非常的方便,不想设置配置yaml的可以很方便的部署。

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

点击部署就成功了k8s应用的部署了。部署后可以看到相应的deployment、pod、service等状态和信息。

  • Deployment

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

  • Pod

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

  • Service

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

  • 监控

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

二、命令行方式

1、创建namespace

vim Nginx-namespace.yaml
 
apiVersion: v1 #类型为Namespace
kind: Namespace  #类型为Namespace
metadata:
  name: ns-test  #命名空间名称
  labels:
    name: label-test  #pod标签

执行:

#创建
kubectl create -f nginx-namespace.yaml
#查询
kubectl get namespace

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

2、创建pod

一般不直接create pod,而是通过controller来创建pod。deployment为其中一种controller。

vim nginx-deployment.yaml
 
apiVersion: Apps/v1
kind: Deployment
metadata:
  namespace: ns-test
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      contAIners:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80

执行:

#创建
kubectl create -f nginx-deployment.yaml
#查询。查询时需要等待一会,此时会下载镜像需要时间
kubectl get deployment  -n ns-test
#或
kubectl get pods -n ns-test

可以看到"replicas: 3",所以有3个pod并且每个pod只有一个容器。都正常启动。

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

接下来看看如何访问,查看访问的端口:

kubectl get pods -o wide -n ns-test   #-o wide 展开的意思

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

这时已经可以访问了,就是通过虚拟ip来端口。

  • curl 10.244.1.43
  • curl 10.244.1.44
  • curl 10.244.1.45

如下图,只要集群范围内的机器就可以直接通过IP访问了。

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

那问题来了,这么多虚拟ip,每次pod重建还会重新生成,那怎么办呢?

看下面的servcie。

3、创建service

vim nginx-service.yaml:

apiVersion: v1
kind: Service
metadata:
  namespace: ns-test
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

执行:

kubectl apply -f nginx-service.yaml
kubectl get svc nginx-service -o wide  -n ns-test

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

可以看到有一个cluster-ip,通过这个端口+端口就可以负载到之前3个节点的nginx了。

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

当然cluster-ip也只能在集群内的机器访问。再结合nginx或域名就可以向外提供负载均衡访问了。

可以看到cluster-ip虽然有负载均衡的功能但还是不能外网访问k8s部署的应用,那如何才能直接外网能访问k8s部署的应用呢?

设置service为nodeport方式,如下:

apiVersion: v1
kind: Service
metadata:
  namespace: ns-test
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - nodePort: 30000
  	protocol: TCP
    port: 80
    targetPort: 80
  type: NodePort

其中type: NodePort另外想指定端口也可以加上nodePort: 30000。这样就可以通过主机ip+nodePort的访问k8s部署的应用了。

执行:

kubectl apply -f nginx-service.yaml
kubectl get svc nginx-service -o wide  -n ns-test

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

可以看到我使用的是我主机的ip+nodePort可以直接访问到nginx了。

Kubernetes 部署应用(Nginx)的两种方式,你更喜欢哪一种?

三、补充知识

1、Service

Kubernetes 服务有四种类型:ClusterIP、NodePort、LoadBalancer 和ExternalName。服务spec中的type 属性决定了服务如何暴露给网络。

  • ClusterIP 类型的服务将在集群内部暴露,并分配一个 cluster IP 地址。Pod 可以通过这个 IP 地址来访问该服务。ClusterIP 类型的服务适用于需要在集群内部访问的服务,例如数据库服务。
  • NodePort 类型的服务将在每个节点上暴露一个端口,并分配一个 cluster IP 地址。外部客户端可以通过 <NodeIP>:<NodePort> 来访问该服务。NodePort 类型的服务适用于需要在集群外部访问的服务,例如 Web 服务。
  • LoadBalancer 类型的服务将使用集群外部的负载均衡器来暴露服务。外部客户端可以通过负载均衡器的 IP 地址来访问该服务。LoadBalancer 类型的服务适用于需要在集群外部访问的服务,并且需要高可用性的服务。一般LoadBalancer是付费提供的。
  • ExternalName 类型的服务将将服务指向一个外部主机或域名。Pod 可以通过该主机或域名来访问该服务。ExternalName 类型的服务适用于需要访问外部服务的场景。


Tags:Kubernetes   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  Search: Kubernetes  点击:(6)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  Search: Kubernetes  点击:(12)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  Search: Kubernetes  点击:(37)  评论:(0)  加入收藏
Kubernetes是什么?主要特点是什么?
Kubernetes是什么?Kubernetes,也称为K8s,是一个开源的容器编排系统,由Google首次开发和维护。它允许容器化的应用程序在集群中自动部署、扩展和管理。Kubernetes提供了一种容器...【详细内容】
2024-02-01  Search: Kubernetes  点击:(153)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  Search: Kubernetes  点击:(50)  评论:(0)  加入收藏
Kubernetes Informer基本原理,你明白了吗?
本文分析 k8s controller 中 informer 启动的基本流程不论是 k8s 自身组件,还是自己编写 controller,都需要通过 apiserver 监听 etcd 事件来完成自己的控制循环逻辑。如何高...【详细内容】
2024-01-30  Search: Kubernetes  点击:(37)  评论:(0)  加入收藏
Kubernetes 100个常用命令!
这篇文章是关于使用 Kubectl 进行 Kubernetes 诊断的指南。列出了 100 个 Kubectl 命令,这些命令对于诊断 Kubernetes 集群中的问题非常有用。这些问题包括但不限于:&bull; 集...【详细内容】
2024-01-03  Search: Kubernetes  点击:(76)  评论:(0)  加入收藏
一文读懂Kubernetes部署策略
在这篇文章中,我们将深入研究 Kubernetes 部署概念和一些常见策略,了解每种策略的优缺点。合适的部署策略使我们能够在发布应用程序时最大限度地减少停机时间、增强客户体验并...【详细内容】
2024-01-03  Search: Kubernetes  点击:(59)  评论:(0)  加入收藏
从Kubernetes的探针到DevOps
今天在群里又看有人问如何设置 Kubernetes 的探针,感觉要补充的话太多了,结合我们在一些 DevOps 项目中痛苦的体验,今天一劳永逸的全部说完,此外,也为大家展现一下为什么 DevOps...【详细内容】
2023-12-27  Search: Kubernetes  点击:(114)  评论:(0)  加入收藏
如何基于Kubernetes运行Nacos高可用集群
Nacos(Namings and Configuration Management)是阿里巴巴开源的一个易于构建云原生应用的动态服务发现、配置管理和服务管理平台。以下是Nacos的一些主要功能和特点: 服务发现...【详细内容】
2023-12-18  Search: Kubernetes  点击:(69)  评论:(0)  加入收藏
▌简易百科推荐
Docker 和传统虚拟机有什么区别?
我有一个程序员朋友,他每年情人节都要送女朋友一台服务器。他说:“谁不想在过节当天收到一台 4核8g 的服务器呢?”“万一对方不要,我还能留着自己用。” 给他一次过节的机会,他能...【详细内容】
2024-03-26  小白debug  微信公众号  Tags:Docker   点击:(11)  评论:(0)  加入收藏
掌握Docker网络驱动程序:优化容器通信
Docker为在容器内包装、交付和运行应用程序提供了一个强大的平台,从而彻底改变了容器化。网络是容器化的重要组成部分,Docker提供了各种网络驱动程序来支持容器之间的通信以...【详细内容】
2024-03-22    51CTO  Tags:Docker   点击:(10)  评论:(0)  加入收藏
Containerd容器管理
Nginx 指定容器名称 使用 ctr container create 命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。容器基本操作容器基本操作主要是 ctr image 命令,查看命令帮...【详细内容】
2024-03-20  云原生运维圈  微信公众号  Tags:容器   点击:(13)  评论:(0)  加入收藏
如何基于Docker镜像逆向生成Dockerfile
引言你是否曾经遇到过一个想要使用的 Docker 镜像,但却无法修改以适应你的特定需求?或者你可能发现了一个喜欢的 Docker 镜像,但想要了解它是如何构建的?在这两种情况下,将 Docke...【详细内容】
2024-03-07  云原生运维圈  微信公众号  Tags:Docker   点击:(22)  评论:(0)  加入收藏
Kubernetes是什么?主要特点是什么?
Kubernetes是什么?Kubernetes,也称为K8s,是一个开源的容器编排系统,由Google首次开发和维护。它允许容器化的应用程序在集群中自动部署、扩展和管理。Kubernetes提供了一种容器...【详细内容】
2024-02-01    简易百科  Tags:Kubernetes   点击:(153)  评论:(0)  加入收藏
我们一起聊聊容器资源自愈
在企业实际在使用容器这类资源的时候,除了技术本身,要考虑的其他问题也会很多。企业管理的容器有千千万万,出于效率考虑,对于有特殊需求的容器如何进行批量创建和管理呢,这就需要...【详细内容】
2024-01-30  匠心独运维妙维效  微信公众号  Tags:容器   点击:(47)  评论:(0)  加入收藏
Docker与Docker Compose入门:释放你应用部署的威力
今天给大家介绍一项强大而有趣的技能,那就是使用 Docker 和 Docker Compose 来释放你的应用部署的威力!无论你是一名开发人员还是系统管理员,掌握这个技能都将为你的工作带来巨...【详细内容】
2024-01-17  waynblog  微信公众号  Tags:Docker   点击:(65)  评论:(0)  加入收藏
Docker镜像与容器的交互及在容器内部执行代码的原理与实践
Docker作为一种流行的容器技术,已经成为现代应用程序开发和部署的重要工具。在Docker中,镜像是构建和运行容器的基础,而容器则是基于镜像创建的可执行实例。Docker镜像与容器的...【详细内容】
2024-01-10  编程技术汇  今日头条  Tags:Docker   点击:(76)  评论:(0)  加入收藏
如何在 Ubuntu 上安装 Docker
使用 Docker 意味着开启一个新的计算领域,但如果你刚刚开始使用 Docker,安装可能看起来是一项艰巨的任务。在 Ubuntu 上安装 Docker 有两种推荐的方法: 从 Ubuntu 的仓库安装 D...【详细内容】
2024-01-04    Linux中国  Tags:Docker   点击:(124)  评论:(0)  加入收藏
从Kubernetes的探针到DevOps
今天在群里又看有人问如何设置 Kubernetes 的探针,感觉要补充的话太多了,结合我们在一些 DevOps 项目中痛苦的体验,今天一劳永逸的全部说完,此外,也为大家展现一下为什么 DevOps...【详细内容】
2023-12-27  云云众生s  微信公众号  Tags:Kubernetes   点击:(114)  评论:(0)  加入收藏
站内最新
站内热门
站内头条