k8s简单部署nginx

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1. 前言

在这里插入图片描述

前文提要

  1. kubeadm简单搭建k8s集群
  2. 第三方面板部署k8s

上篇文章我们简单部署了k8s的集群环境相比一定迫不及待的想部署一个实际应用了吧。那这里我们就简单部署一个大家几乎都用得上的应用nginx。

2. 部署nginx

在这里插入图片描述

2.1. 创建一个nginx的Deployment

里面一一般包含nginx相关的镜像,端口名字pod数量

kubernetes主要的功能就是管理多个PodPod中可以包含一个或多个容器而kubernetes是如可管理多个Pod的呢对没错就是通过控制器比如Deployment

vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2  # 设置副本数量
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest #镜像拉取地址
        ports:
        - containerPort: 80 #监听端口
kubectl apply -f nginx-deployment.yaml
  1. 执行配置
kubectl apply -f nginx-deployment.yaml

在这里插入图片描述
在这里插入图片描述
到这里running就算创建完成了。

❓那么如何访问呢或者说怎么把服务暴漏呢那么多容器到底访问哪一个呢❓

2.2. 创建一个nginx的service

Service的主要目标是为Kubernetes集群内的应用程序提供一个稳定的网络端点使它们可以相互通信。它顺便实现了以下几个功能。

  • 服务发现Kubernetes中的应用程序通常以副本的方式运行这意味着多个相同的应用程序副本可能分布在集群的不同节点上。Service允许客户端应用程序找到并连接到这些副本而无需了解它们的具体位置。Service为应用程序提供了一个虚拟的DNS名称或IP地址客户端可以使用该名称或IP地址来访问服务。
  • 负载均衡Service在后台自动为多个副本分布的应用程序提供负载均衡。当客户端请求连接到Service时它会将请求平均分发给可用的副本以确保流量分布均匀避免某个副本过载。
  • 完整性检查Service还提供了对服务的基本完整性检查。如果某个副本不可用例如由于节点故障或容器崩溃Service会将流量路由到可用的副本以确保服务的连续性。

不过我们为了测试我们就用了一个最简单的ndeport的网络说实话这并为用到k8s的核心内容相当于单主机部署nginx并且开了一个端口。

在这里插入图片描述

  • ClusterIP是默认的Service类型。 它为服务分配一个虚拟的Cluster IP地址仅在Kubernetes集群内部可用。
    这意味着只有集群内部的其他Pod可以通过Cluster IP地址访问该服务。
    ClusterIP通常用于内部微服务之间的通信不会暴露到集群外部。 NodePort

  • NodePort 类型的Service会在每个Node上都开放一个静态端口允许从集群外部访问服务。
    当外部流量到达NodePort端口时它将被转发到Service的Cluster IP地址并由Kubernetes进行负载均衡。
    NodePort通常用于需要从集群外部访问服务的场景但不是最安全的方式因为端口是公开的。 LoadBalancer

  • LoadBalancer类型的Service使用云提供商如AWS、Azure、GCP的负载均衡器服务来公开应用程序。
    在创建LoadBalancer Service时云提供商将为该服务分配一个外部IP地址并将流量分发到集群中的Pod。
    LoadBalancer通常用于需要在云环境中公开服务并实现负载均衡的情况。它对于外部流量非常有用并且可以与HTTPS等TLS证书集成以提供安全的外部访问。

一般在落地方案中LoadBalancer分发流量是比较合适的同时在纯后端应用中使用ClusterIP也没问题。

  1. 创建配置文件
vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 8000 #nortPort开在主机的端口
  type: NodePort  # 这里使用LoadBalancer类型如果你在本地运行可以使用NodePort类型或ClusterIP类型

/1e208a1ada514890ae22c3689db903b5.png)

  1. 执行配置文件
kubectl apply -f nginx-service.yaml

在这里插入图片描述

3. 总结

这篇文章我们使用nodePort访问了k8s部署的nginx并且简单理解了k8s的网络构成这对对于我们理解k8s的庞大架构是重要的希望我们不忘初心砥砺前行

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginxk8s