Kubernetes入门操作

部署应用

  1. 创建nginx-deployment.yaml文件
apiVersion: apps/v1	#与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment	#该配置的类型,我们使用的是 Deployment
metadata:	        #译名为元数据,即 Deployment 的一些基本属性和信息
  name: nginx-deployment	#Deployment 的名称
  labels:	    #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
    app: nginx	#为该Deployment设置key为app,value为nginx的标签
spec:	        #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
  replicas: 1	#使用该Deployment创建一个应用程序实例
  selector:	    #标签选择器,与上面的标签共同作用,目前不需要理解
    matchLabels: #选择包含标签app:nginx的资源
      app: nginx
  template:	    #这是选择或创建的Pod的模板
    metadata:	#Pod的元数据
      labels:	#Pod的标签,上面的selector即选择包含标签app:nginx的Pod
        app: nginx
    spec:	    #期望Pod实现的功能(即在pod中部署)
      containers:	#生成container,与docker中的container是同一种
      - name: nginx	#container的名称
        image: nginx:1.7.9	#使用镜像nginx:1.7.9创建container,该container默认80端口可访问
  1. 应用yaml文件
    kubectl apply -f nginx-deployment.yaml
  2. 查看部署结果
    kubectl get deployment
    nginx-deployment
    kubectl get pods | grep nginx-deployment
    pod

查看pod/nodes

Pod概述

pod的生命周期
在这里插入图片描述
Pod 容器组 是一个k8s中一个抽象的概念,用于存放一组 container(可包含一个或多个 container 容器,即图上正方体),以及这些 container (容器)的一些共享资源。这些资源包括:

  • 共享存储,称为卷(Volumes),即图上紫色圆柱
  • 网络,每个 Pod(容器组)在集群中有个唯一的 IP,pod(容器组)中的 container(容器)共享该IP地址
  • container(容器)的基本信息,例如容器的镜像版本,对外暴露的端口等

pod是Kubernetes的最小调度单元,当我们执行kubectl apply -f nginx-deployment.yaml创建一个Deployment,然后会在集群上创建包含容器的 Pod (而不是直接创建容器)。该pod会被调度到一个节点上,并在该节点上保持运行直到终止或删除。

Node

在这里插入图片描述
Pod总是在 Node上运行。Node是 kubernetes 集群中的计算机,可以是虚拟机或物理机。每个 Node都由 master 管理。一个 Node可以有多个Pod,kubernetes master 会根据每个 Node上可用资源的情况,自动调度 Pod到最佳的 Node上。

每个 Kubernetes Node运行以下几个组件:

  • Kubelet,负责 master 节点和 worker 节点之间通信的进程;管理 Pod和Pod内运行的 Container,管理pod状态。
  • kube-proxy 网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。维护网络规则, 允许从集群内部或外部的网络会话与 Pod 进行网络通信。
  • Container Runtime(容器运行时)负责下载镜像、创建和运行容器等。

相关指令操作

  1. kubectl get - 显示资源列表
  2. kubectl describe - 显示有关资源的详细信息
  3. kubectl logs - 查看pod中的容器的打印日志
  4. kubectl exec - 进入pod中的容器
    更多详细指令

公布应用程序

在一个Kubernetes集群中,如果有多个node,pod会被调度到其中一个或几个node中,在pod调度过程中ip会经常发生变化(即使是同一node上有多个pod,不同pod的IP也不同)(一个pod的网络类似于docker中一个网络组network,是一个虚拟ip)

我们需要一种机制,为前端系统屏蔽后端系统的 Pod(容器组)在销毁、创建过程中所带来的 IP 地址的变化。
Kubernetes 中的 Service(服务) 提供了这样的一个抽象层,它选择具备某些特征的 Pod(容器组)并为它们定义一个访问方式。Service(服务)使 Pod(容器组)之间的相互依赖解耦(原本从一个 Pod 中访问另外一个 Pod,需要知道对方的 IP 地址)。一个 Service(服务)选定哪些 Pod(容器组) 通常由 LabelSelector(标签选择器) 来决定。

在创建Service的时候,通过设置配置文件中的 spec.type 字段的值,可以以不同方式向外部暴露应用程序:

  • ClusterIP(默认)
    在群集中的内部IP上公布服务,这种方式的 Service(服务)只在集群内部可以访问到

  • NodePort
    使用 NAT 在集群中每个的同一端口上公布服务。这种方式下,可以通过访问集群中任意节点+端口号的方式访问服务 :。此时 ClusterIP 的访问方式仍然可用。

  • LoadBalancer
    在云环境中(需要云供应商可以支持)创建一个集群外部的负载均衡器,并为使用该负载均衡器的 IP 地址作为服务的访问地址。此时 ClusterIP 和 NodePort 的访问方式仍然可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值