k8s的核心资源

workload型资源

  • Pod
  • ReplicaSet
  • Deployment
  • StatefulSet
  • DaemonSet
  • Job
  • Cronjob

服务发现及负载均衡型资源

  • Service
  • ingress

配置与存储相关的资源

  • 存储卷Volume

    • 云端存储
    • 亚马逊弹性块存储
    • SAN
    • GlusterFS(分布式存储)
    • NFS
  • 容器存储接口CSI

  • ConfgMap(配置中心)

  • Secret(保存敏感信息)

  • DovwnwardAPI(将外部环境的信息输出给容器)

集群级资源

  • Nampspace
  • Node
  • Role
  • ClusterRole
  • RoleBinding
  • ClusterRoleBinding

元数据型资源

  • HPA
  • PodTemplate(用于让控制器创建Pod时使用的模板)
  • LlmitRange

创建资源的方式

使用命令进行创建

使用命令式资源清单创建
apiserver仅接收json格式的资源定义
使用yaml格式提供配置清单,apiserver可自动将其转为json格式并执行

使用声明式资源清单创建
可以确保资源尽可能向声明的状态靠近,并且可以随时改变声明、随时应用新的声明

资源配置清单的组成

apiVersionAPI版本
kind资源类型
metadata资源元数据
spec资源规格
replicas副本数量
selector标签选择器
templatePod模板
metadataPod元数据
specPod规格
containers容器配置

apiVersion
kubectl api-versions
alpha(内测版)
beta(公测版)
stable(稳定版)

kind

metadata
name(同一类别下惟一)
namespace
labels
annotations
每个资源的引用PATH(/api/GROUP/VERSION/namespaces/NAMESPACE/TYPE/NAME)

spec(期望的状态)

status
当前的状态,本字段由kubenetes集群维护,用户无法定义和更改

kubectl explain pods
执行kubectl explain pods可以查看pod资源的配置清单应有哪些参数、如何定义等等

kubectl explain pods.metadata
执行kubectl explain pods.metadata可以查看pods的metadata参数如何配置

定义一个基于YAML格式的配置

在这里插入图片描述

[root@master manifest]# cat deploy.yaml 
---
apiVersion: v1	
kind: Namespace
metadata:
  name: jjyy

---
apiVersion: apps/v1		#api版本
kind: Deployment		#资源类型
metadata:				#元数据定义
  name: web				#名称
  namespace: jjyy		#名称空间
spec:					#deployment定义
  replicas: 3			#定义2个副本
  selector:				#标签选择器,匹配pod的标签
    matchLabels:
      app: httpd-web
  template:  			#pod模板定义
    metadata:
      labels:			#这里的标签必须和标签选择器的一致
        app: httpd-web
    spec:				#pod内的容器定义
      containers:
      - name: web
        image: 1314444/httpd:v0.2
---
apiVersion: v1
kind: Service
metadata:
  name: web
  namespace: jjyy
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 80		#容器端口
  selector:
    app: httpd-web
  type: NodePort


[root@master ~]# kubectl apply -f manifest/deploy.yaml 
namespace/jjyy created
deployment.apps/web created
service/web created
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   3d6h
jjyy              Active   16s
kube-node-lease   Active   3d6h
kube-public       Active   3d6h
kube-system       Active   3d6h

[root@master ~]# kubectl get pods -n jjyy
NAME                   READY   STATUS    RESTARTS   AGE
web-5dbdf86b79-jr8nf   0/1     Running   0          44s
web-5dbdf86b79-wbs7v   0/1     Running   0          44s
web-5dbdf86b79-wf2bt   0/1     Running   0          44s

[root@master ~]# kubectl get svc -n jjyy
NAME   TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
web    NodePort   10.101.215.246   <none>        8080:30033/TCP   83s

[root@master ~]# kubectl get deploy -n jjyy
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
web    3/3     3            0           117s

[root@master ~]# curl 10.101.215.246:8080
test page on 666

[root@master ~]# kubectl delete -f manifest/deploy.yaml 
namespace "jjyy" deleted
deployment.apps "web" deleted
service "web" deleted

[root@master ~]# kubectl get pods -n jjyy
No resources found in jjyy namespace.
[root@master ~]# kubectl get svc -n jjyy
No resources found in jjyy namespace.

在这里插入图片描述

//用create命令生成
[root@master ~]# kubectl create deployment nginx --image=nginx:1.16 -o yaml --dry-run=client > my-deploy.yaml

//用get命令导出
[root@master ~]# kubectl get deployment nginx -o yaml > my-deploy.yaml

//pod容器的字段拼写忘记了
[root@master ~]# kubectl explain pods.pec.containers
[root@master ~]# kubectl explain deployment
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐