Kubernetes中基本对象

文章目录

  • 1.Kubernetes中基本对象
    • pod
    • Deployment
    • StatefulSet
    • job
    • CronJob
    • DaemonSet
    • Service
    • Ingress
    • ConfigMap
    • Secret
    • PersistentVolume (PV)
    • PersistentVolumeClaim(PVC)
  • 2.Kubernetes中对象描述
  • 3.在Kubernetes中的应用

本文将记录下Kubernetes中基本对象及它们之间的一些关系。

1.Kubernetes中基本对象

Kubernetes中基本对象_第1张图片

pod

Pod是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器(container)、存储资源(volume)、
一个独立的网络IP以
及管理控制容器运行方式的策略选项。

Deployment

Deployment是对Pod的服务化封装。一个Deployment可以包含一个或多个Pod,每个Pod的角色相同,所以系统会自动为Deployment的多个Pod分发请求。

StatefulSet

StatefulSet是用来管理有状态应用的对象。和Deployment相同的是,statefulset管理了基于相同容器定义的一组Pod。但和Deployment不同的是,statefulset为它们的每个Pod维护了一个固定的ID。这些Pod是基于相同的声明来创建的,但是不能相互替换,无论怎么调度,每个Pod都有一个永久不变的ID。

job

Job是用来控制批处理型任务的对象。批处理业务与长期伺服业务(Deployment)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。」ob管理的Pod根据用户的设置把任务成功完成就自动退出(Pod白动删除)

CronJob

CronJob是基于时间控制的Job,类似于Linux系统的crontab,在指定的时间周期运行指定的任务。

DaemonSet

Daemonset是这样一种对象(守护进程),它在集群的每个节点上运行一个Pod,且保证只有一个Pod,这非常适合一些系统层面的应用,例如日志收集、资源监控等,这类应用需要每个节点都运行,且不需要太多实例,一个比较好的例子就是Kubernetes的kube-proxy。

Service

Service将访问流量转发给Pod,Service是用来解决Pod访问问题的。Service有一个固定IP地址,而且Service可以给这些Pod做负载均衡。

Ingress

Service是基于四层TCP和UDP协议转发的,ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分。

ConfigMap

ConfigMap是一种用于存储应用所需配置信息的资源类型,用于保存配置数据的键值对。通过configMap可以方便地做到配置解耦使得不同环境有不同的配置

Secret

Secret是一种加密存储的资源对象,您可以将认证信息、证书、私钥等保存在Secret中,而不需要把这些敏感数据暴露到镜像或者Pod
定义中,从而更加安全和灵活。

PersistentVolume (PV)

PV指持久化数据存储卷,主要定义的是一个持久化存储在宿主机上的目录,比如一个NFS的挂载目录.

PersistentVolumeClaim(PVC)

Kuberetes提供PVC专门用于持久化存储的申请,PVC可以让您无需关心底层存储资源如何创建、释放等动作,而只需要申明您需要何
种类型的存储资源、多大的存储空间。

2.Kubernetes中对象描述

kubernetes中资源可以使用YAML描述其内容可以分为如下四个部分:

  • typeMeta:对象类型的元信息,声明对象使用哪个API版本,哪个类型的对象。

  • objectMeta:对象的元信息,包括对象名称、使用的标签等。

  • spec:对象的期望状态,例如对象使用什么镜像、有多少副本等。

  • status:对象的实际状态,只能在对象创建后看到,创建对象时无需指定。

YAML描述文件

Kubernetes中基本对象_第2张图片

3.在Kubernetes中的应用

将一下内容保存为nginx-deployment.yml的文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name:  nginx
  labels:
    app:  nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app:  nginx
    spec:
      containers:
      - name:  nginx
        image:  nginx:alpine
        resources:
          requests:
            cpu: 100m
            memory: 200Mi
          limits:
            cpu: 100m
            memory: 200Mi
      imagePullSecrets:
      - name: default-secret

在master节点执行

# kubectl create -f nginx-deployment.yaml 
deployment.apps/nginx created

执行后,会创建3个pod,使用如下命令可以查询到deployment和pod

# kubectl get deploy
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   3/3     3            3           9s

# kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-685898579b-qrt4d   1/1     Running   0          15s
nginx-685898579b-t9zd2   1/1     Running   0          15s
nginx-685898579b-w59jn   1/1     Running   0          15s

至此,我们了解到kubernets的集群的对象、kubernets的基本概念,并通过创建nginx pod了解kubelet的基本使用。

关注公众号**“原宏Cloud运维栈”**,带你学习更多的运维实战技巧

你可能感兴趣的:(K8S,kubernetes,容器,云原生)