赞
踩
(1)Kubernetes 支持 YAML 和 JSON 格式管理资源对象
(2)JSON 格式:主要用于 api 接口之间消息的传递
(3)YAML 格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读
(1)大小写敏感
(2)使用缩进表示层级关系
(3)不支持Tab键制表符缩进,只使用空格缩进
(4)缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
(5)符号字符后缩进一个空格,如冒号,逗号,短横杆(-)等
(6)“---”表示YAML格式,一个文件的开始,用于分隔文件间
(7)“#”表示注释
kubectl api-versions
- [root@k8s-master-136 ~]# kubectl api-versions
- admissionregistration.k8s.io/v1
- admissionregistration.k8s.io/v1beta1
- apiextensions.k8s.io/v1
- apiextensions.k8s.io/v1beta1
- apiregistration.k8s.io/v1
- apiregistration.k8s.io/v1beta1
- apps/v1
- authentication.k8s.io/v1
- authentication.k8s.io/v1beta1
- authorization.k8s.io/v1
- authorization.k8s.io/v1beta1
- autoscaling/v1
- autoscaling/v2beta1
- autoscaling/v2beta2
- batch/v1
- batch/v1beta1
- certificates.k8s.io/v1
- certificates.k8s.io/v1beta1
- coordination.k8s.io/v1
- coordination.k8s.io/v1beta1
- crd.projectcalico.org/v1
- discovery.k8s.io/v1
- discovery.k8s.io/v1beta1
- events.k8s.io/v1
- events.k8s.io/v1beta1
- extensions/v1beta1
- flowcontrol.apiserver.k8s.io/v1beta1
- networking.k8s.io/v1
- networking.k8s.io/v1beta1
- node.k8s.io/v1
- node.k8s.io/v1beta1
- policy/v1
- policy/v1beta1
- rbac.authorization.k8s.io/v1
- rbac.authorization.k8s.io/v1beta1
- scheduling.k8s.io/v1
- scheduling.k8s.io/v1beta1
- storage.k8s.io/v1
- storage.k8s.io/v1beta1
- v1

- #查看deployment的版本定义
- kubectl explain deployment
- [root@k8s-master-136 ~]# kubectl explain deployment
- KIND: Deployment
- VERSION: apps/v1
-
- DESCRIPTION:
- Deployment enables declarative updates for Pods and ReplicaSets.
-
- FIELDS:
- apiVersion <string>
- APIVersion defines the versioned schema of this representation of an
- object. Servers should convert recognized schemas to the latest internal
- value, and may reject unrecognized values. More info:
- https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
-
- kind <string>
- Kind is a string value representing the REST resource this object
- represents. Servers may infer this from the endpoint the client submits
- requests to. Cannot be updated. In CamelCase. More info:
- https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
-
- metadata <Object>
- Standard object metadata.
-
- spec <Object>
- Specification of the desired behavior of the Deployment.
-
- status <Object>
- Most recently observed status of the Deployment.

- #查看api的版本
- kubectl explain deployment.apiVersion
-
- [root@k8s-master-136 ~]# kubectl explain deployment.apiVersion
- KIND: Deployment
- VERSION: apps/v1
-
- FIELD: apiVersion <string>
-
- DESCRIPTION:
- APIVersion defines the versioned schema of this representation of an
- object. Servers should convert recognized schemas to the latest internal
- value, and may reject unrecognized values. More info:
- https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- #查看元数据信息
- kubectl explain deployment.apiVersion
- #定义标签介绍
- kubectl explain deployment.spec.selector
-
- [root@k8s-master-136 ~]# kubectl explain deployment.spec.selector
- KIND: Deployment
- VERSION: apps/v1
-
- RESOURCE: selector <Object>
-
- DESCRIPTION:
- Label selector for pods. Existing ReplicaSets whose pods are selected by
- this will be the ones affected by this deployment. It must match the pod
- template's labels.
-
- A label selector is a label query over a set of resources. The result of
- matchLabels and matchExpressions are ANDed. An empty label selector matches
- all objects. A null label selector matches no objects.
-
- FIELDS:
- matchExpressions <[]Object>
- matchExpressions is a list of label selector requirements. The requirements
- are ANDed.
-
- matchLabels <map[string]string>
- matchLabels is a map of {key,value} pairs. A single {key,value} in the
- matchLabels map is equivalent to an element of matchExpressions, whose key
- field is "key", the operator is "In", and the values array contains only
- "value". The requirements are ANDed.
-
- #对matchLabels标签介绍
- kubectl explain deployment.spec.selector.matchLabels
-
- [root@k8s-master-136 ~]# kubectl explain deployment.spec.selector.matchLabels
- KIND: Deployment
- VERSION: apps/v1
-
- FIELD: matchLabels <map[string]string>
-
- DESCRIPTION:
- matchLabels is a map of {key,value} pairs. A single {key,value} in the
- matchLabels map is equivalent to an element of matchExpressions, whose key
- field is "key", the operator is "In", and the values array contains only
- "value". The requirements are ANDed.

创建pod
- vim nginx-deployment.yaml
-
- apiVersion: apps/v1 #指定api版本标签
- kind: Deployment #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
- metadata: #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
- name: nginx-deployment #定义资源的名称,在同一个namespace空间中必须是唯一的
- namespace: default #默认就是default,可以不用写
- labels: #定义Deployment资源标签
- app: nginx
- spec: #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
- replicas: 3 #定义副本数量
- selector: #定义标签选择器
- matchLabels: #定义匹配标签
- app: nginx #需与 .spec.template.metadata.labels 定义的标签保持一致
- template: #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
- metadata:
- labels: #定义Pod副本将使用的标签,需与 .spec.selector.matchLabels 定义的标签保持一致
- app: nginx
- spec:
- containers: #定义容器属性
- - name: nginx #定义一个容器名,一个 - name: 定义一个容器
- image: nginx:1.15.4 #定义容器使用的镜像以及版本
- ports:
- - containerPort: 80 #定义容器的对外的端口

- #创建资源对象
- kubectl create -f nginx-deployment.yaml
- 或
- kubectl apply -f nginx-deployment.yaml
- #查看创建的资源对象,创建需等待running
- kubectl get pod
容器如果想对外提供访问,需创建service 发布
-
- #创建service服务对外提供访问并测试
- vim nginx-service.yaml
-
- apiVersion: v1
- kind: Service
- metadata:
- name: nginx-service
- labels:
- app: nginx
- spec:
- selector:
- app: nginx
- type: NodePort
- ports:
- - port: 80
- targetPort: 80

- #创建资源对象
- kubectl create -f nginx-service.yaml
- 或
- kubectl apply -f nginx-service.yaml
- #查看创建的service
- kubectl get svc
详解k8s中的port:
●port
port 是 k8s 集群内部访问service的端口,即通过 clusterIP: port 可以从 Pod 所在的 Node 上访问到 service
●nodePort
nodePort 是外部访问 k8s 集群中 service 的端口,通过 nodeIP: nodePort 可以从外部访问到某个 service。
●targetPort
targetPort 是 Pod 的端口,从 port 或 nodePort 来的流量经过 kube-proxy 反向代理负载均衡转发到后端 Pod 的 targetPort 上,最后进入容器。
●containerPort
containerPort 是 Pod 内部容器的端口,targetPort 映射到 containerPort。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。