Kubernetes资源详解

一、Kubernetes各种资源详解

1.1. kuelet可操作资源

kubectl可操作的资源及资源详解,可通过 kuebectl api-resources 获取详情

NAMESHORTNAMESAPIVERSIONNAMESPACEDKIND
bindingsv1trueBinding
componentstatusescsv1falseComponentStatus
configmapscmv1trueConfigMap
endpointsepv1trueEndpoints
eventsevv1trueEvent
limitrangeslimitsv1trueLimitRange
namespacesnsv1falseNamespace
nodesnov1falseNode
persistentvolumeclaimspvcv1truePersistentVolumeClaim
persistentvolumespvv1falsePersistentVolume
podspov1truePod
podtemplatesv1truePodTemplate
replicationcontrollersrcv1trueReplicationController
resourcequotasquotav1trueResourceQuota
secretsv1trueSecret
serviceaccountssav1trueServiceAccount
servicessvcv1trueService
mutatingwebhookconfigurationsadmissionregistration.k8s.io/v1falseMutatingWebhookConfiguration
validatingwebhookconfigurationsadmissionregistration.k8s.io/v1falseValidatingWebhookConfiguration
customresourcedefinitionscrd,crdsapiextensions.k8s.io/v1falseCustomResourceDefinition
apiservicesapiregistration.k8s.io/v1falseAPIService
controllerrevisionsapps/v1trueControllerRevision
daemonsetsdsapps/v1trueDaemonSet
deploymentsdeployapps/v1trueDeployment
replicasetsrsapps/v1trueReplicaSet
statefulsetsstsapps/v1trueStatefulSet
tokenreviewsauthentication.k8s.io/v1falseTokenReview
localsubjectaccessreviewsauthorization.k8s.io/v1trueLocalSubjectAccessReview
selfsubjectaccessreviewsauthorization.k8s.io/v1falseSelfSubjectAccessReview
selfsubjectrulesreviewsauthorization.k8s.io/v1falseSelfSubjectRulesReview
subjectaccessreviewsauthorization.k8s.io/v1falseSubjectAccessReview
horizontalpodautoscalershpaautoscaling/v1trueHorizontalPodAutoscaler
cronjobscjbatch/v1beta1trueCronJob
jobsbatch/v1trueJob
certificatesigningrequestscsrcertificates.k8s.io/v1falseCertificateSigningRequest
leasescoordination.k8s.io/v1trueLease
bgpconfigurationscrd.projectcalico.org/v1falseBGPConfiguration
bgppeerscrd.projectcalico.org/v1falseBGPPeer
blockaffinitiescrd.projectcalico.org/v1falseBlockAffinity
caliconodestatusescrd.projectcalico.org/v1falseCalicoNodeStatus
clusterinformationscrd.projectcalico.org/v1falseClusterInformation
felixconfigurationscrd.projectcalico.org/v1falseFelixConfiguration
globalnetworkpoliciescrd.projectcalico.org/v1falseGlobalNetworkPolicy
globalnetworksetscrd.projectcalico.org/v1falseGlobalNetworkSet
hostendpointscrd.projectcalico.org/v1falseHostEndpoint
ipamblockscrd.projectcalico.org/v1falseIPAMBlock
ipamconfigscrd.projectcalico.org/v1falseIPAMConfig
ipamhandlescrd.projectcalico.org/v1falseIPAMHandle
ippoolscrd.projectcalico.org/v1falseIPPool
ipreservationscrd.projectcalico.org/v1falseIPReservation
kubecontrollersconfigurationscrd.projectcalico.org/v1falseKubeControllersConfiguration
networkpoliciescrd.projectcalico.org/v1trueNetworkPolicy
networksetscrd.projectcalico.org/v1trueNetworkSet
endpointslicesdiscovery.k8s.io/v1beta1trueEndpointSlice
eventsevevents.k8s.io/v1trueEvent
ingressesingextensions/v1beta1trueIngress
flowschemasflowcontrol.apiserver.k8s.io/v1beta1falseFlowSchema
prioritylevelconfigurationsflowcontrol.apiserver.k8s.io/v1beta1falsePriorityLevelConfiguration
nodesmetrics.k8s.io/v1beta1falseNodeMetrics
podsmetrics.k8s.io/v1beta1truePodMetrics
ingressclassesnetworking.k8s.io/v1falseIngressClass
ingressesingnetworking.k8s.io/v1trueIngress
networkpoliciesnetpol networking.k8s.io/v1trueNetworkPolicy
runtimeclassesnode.k8s.io/v1falseRuntimeClass
poddisruptionbudgetspdbpolicy/v1beta1truePodDisruptionBudget
podsecuritypoliciespsppolicy/v1beta1falsePodSecurityPolicy
clusterrolebindingsrbac.authorization.k8s.io/v1falseClusterRoleBinding
clusterrolesrbac.authorization.k8s.io/v1falseClusterRole
rolebindingsrbac.authorization.k8s.io/v1trueRoleBinding
rolesrbac.authorization.k8s.io/v1trueRole
priorityclassespcscheduling.k8s.io/v1falsePriorityClass
csidriversstorage.k8s.io/v1falseCSIDriver
csinodesstorage.k8s.io/v1falseCSINode
storageclassesscstorage.k8s.io/v1falseStorageClass
volumeattachmentsstorage.k8s.io/v1falseVolumeAttachment

1.2. Pod定义详解

Pod定义详解(Required表示必填)

# Required 
apiVersion: v1	# 版本号,比如V1
# Required 
kind: Pod  		# k8s资源类型,比如Pod、Service、Deployment
# Required 
metadata:		# 元数据
# Required 
  name: string	# Pod 的名称,命名规范符合 RFC 1035 规范
# Required 
  namespace: string	# Pod 所属的命名空间
  labels: 		
    - name: string		# 自定义标签列表
  annotations:
    - name: string		# 自定义注解列表
# Required 
spec:				# Pod中容器的详细定义
# Required 
  containers:		# Pod 中的容器列表
# Required 
  - name: string	# 容器名
# Required 
    image: string	# 容器镜像名称
# Required 
    imagePullPolicy: [Always | Never | IfNotPresent]	# 镜像拉取策略。Always表示每次都尝试重新拉取镜像;   IfNotPresent表示如果本地有该镜像,则使用本地的镜像,本地不存在则拉取镜像;Never表示只使用本地镜像
    command: [string]	# 容器的启动命令列表
    args: [string]		# 容器的启动命令参数列表
    workingiDir: string	# 容器的工作目录
    volumeMounts:		# 挂载到容器内部的存储卷配置
    - name: string		# 引用Pod定义的共享存储卷的名称,需要使用 volumes[] 部分定义的共享存储卷名称
      mountPath: string	# 存储卷在容器内挂载的绝对路径,应小于512个字符
    ports:				# 容器需要暴露的端口号列表
    - name: string		# 端口号的名称
      containerPort: int	# 容器需要监听的端口
      hostPort: int		# 容器所在主机需要监听的端口,默认与containerPort相同。设置hostPort时,同一台宿主机将无法启动该容器的第二份副本
      protocol: string	# 端口协议,支持TCP合UDP,默认使用TCP
    env:				# 容器运行前需要设置的环境变量
    - name: string		# 环境变量的名称
      value: string		# 环境变量的值
    resources:			# 资源限制和资源请求的设置
      limits:			# 资源限制设置
        cpu: string		# CPU限制,单位为core 数,将用于docker run --cpu-shares参数
        memory: string	# 内存限制,单位可以为MiB、GiB,将用于docker run --memory参数
      requests:			# 资源请求的设置
        cpu: string		# CPU请求,单位为core数,启动容器时初始可用数量
        memory: string	# 内存请求,单位可以为MiB、GiB等,容器启动的初始可用数量
      livenessProbe:	# 对Pod内各容器健康检查的设置,当探测无响应几次之后,系统将自动重启该容器。可以设置的方法包括 etec、httpGet 和tcpSocket。对一个容器仅需要设置一种容器
        exec:			# 对Pod内各容器健康检查的设置,exec方式
          command: [string]	# exec方式需要指定的命令或者脚本
        httpGet:		# 对Pod内各容器健康检查的设置,HttpGet方式,需指定path、port
          path: string	
          port: number
          host: string
          scheme: string
          httpHeaders:
          - name: string
            value: string
        tcpSocket:		# 对Pod内各容器健康检查的设置,tcpSocke的方式
          port: number
        initialDelaySeconds: 0	# 容器启动完成后首次探测时间,单位为s
        timeoutSeconds: 0		# 对容器健康检查的探测等待响应的超时时间设置,单位为s,默认为1。若超过该超时时间设置,则将默认认为该容器不健康,会重启该容器。
        periodSeconds: 0	# 对容器健康检查的定期探测时间,单位为s,默认10s探测一次
        successThreshold: 0
        failureThreshold: 0
      securityContext:
        privileged: false
    restartPolicy: [Always | Never | OnFailure]	# Pod的重启策略,可选值为Always、OnFailure。默认为Always。Always表示Pod一旦终止运行,则无论容器时如何终止的,kubelet都将重启它;OnFailure表示只有Pod以非0退出码终止时,kubelet才会重启该容器。如果容器正常退出(结束码为0),则kubelet不会重启它。
    nodeSelector: object	# 设置Node的Label,以key:value 格式指定,Pod将被调度到具有这些Label的Node上
    imagePullSecrets:	# pull 镜像时使用的Secret名称,以name:secretkey 格式指定
    - name: string		
    hostNetwork: false	# 是否使用主机网络模式,默认为false。设置为true表示容器使用宿主机网络,不再使用docker网桥,该Pod 将无法在同一台宿主机上启动第2 个副本。
    volumes:			# 在该pod上定义的共享存储卷列表
    - name: string		# 共享存储卷的名称。包括emptyDir、hostPath、gcePersistentDisk、awsElasticBlockStore、getRepo、Ssecret、nfs、iscsi、glusterfs、persistentVolumeClaim、rbd、flexVolume、cinder、cephfs、flocker、downlordAPI、fc、azureFile、configMap、vsphereVolume等,定义多个volume时,每个Volume的name保持唯一。
      emptyDir: {}		# 类型为empty的存储卷,表示与pod同生命周期的一个临时目录,其值为一个空对象
      hostPath:		# 类型为hostPath的存储卷,表示Pod容器挂载的宿主机目录
        path: string	
      secret:		# 类型为secret的存储卷,表示挂载集群预定义的secret对象到容器内部
        secretName: string
        items:
        - key: string
          path: string
      configMap:	# 类型为ConfigMap的存储卷,表示挂载集群预定义的ConfigMap对象到容器内部
        name: string
        items:
        - key: string
          path: string


1.3. Service定义详解

Service定义详解(Required表示必填)

# Required
apiVersion: v1		# 版本号
# Required		
kind: Service		# 类型
# Required
metadata:			# 元数据
# Required
  name: string		# Service名称
# Required
  namespace: string	# 命名空间,不指定使用default的命名空间
  labels:			# 自定义标签属性列表
    -name: string	
  annotations:		# 自定义注解属性列表
    - name: string
# Required
spec:				# 详细描述
# Required
  selector: []		# Label Selector配置,将选择具有指定Label标签的Pod作为管理范围
# Required 
  type: string		# Service的类型,指定service的访问方式,默认为ClusterIP。 ClusterIP:虚拟服务IP地址,该地址用于kubernetes集群内部的Pod访问,在Node上kube-proxy通过设置的iptables规则进行转发;NodePort:使用宿主机的端口,使能够访问各Node的外部客户端通过Node的IP地址和端口号就能访问服务;LoadBalancer: 使用外界负载均衡器完成到服务的负载分发,需要在 spec.status.oadBalancer 字段指定外部负载均衡服务器的IP地址,同时定义 nodePort 和clusterIP,用于公有云环境。
  clusterIP: string			# 虚拟服务的IP地址,当type=clusterIP时,如果不指定,则系统自动分配,也可以手动指定;当type = LoadBalancer时需要指定
  sessionAffinity: string	# 是否指定Seesion,可选值为CientIP,默认值为None。ClientIP:表示将同一个客户端(根据客户端的IP地址决定)的访问请求都转发到同一个后端Pod
  ports:					# Service端口列表
  - name: string			# 端口名称
    protocol: string		# 端口协议,支持TCP和UDP,默认值为TCP
    port: int				# 服务端监听到的端口号
    targetPort: int			# 需要转发到后端Pod的端口号
    nodePort: int			# 当spec.type=NodePort时,指定映射到宿主机的端口号
  status: 					# 当spec.type = LoadBalancer时,设置外部负载均衡的地址,用于公有云环境
    loadBalancer:			# 外部负载均衡器
      ingress:				# 外部负载均衡器
        ip: string			# 外部负载均衡器的IP地址
        hostname: string	# 外部负载均衡器的主机名

二、kubernetes 实操

2.1. 创建Namespace

# namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: namespace-name
kubectl create -f namespace.yaml

2.2. 创建Pod

# mysql.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql
  name: mysql
  namespace: supermap-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:5.7
        name: mysql
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"

kubectl apply -f mysql.yaml

2.3. 创建Service

# mysql-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: supermap-test
spec:
  type: NodePort
  ports:
    - port: 3306
  selector:
    app: mysql

kubectl create -f mysql-svc.yaml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会灭火的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值