乐趣区

关于kubernetes:K8s-yaml常用语法持续更新中

apiVersion

 解释: 以后所有可用的 API 版本

罕用的 apiVersion: 
v1:Kubernetes API 的稳固版本,蕴含很多外围对象:pod、service 等。apps/v1:蕴含一些通用的应用层的 api 组合,如:Deployments, RollingUpdates, and ReplicaSets。batch/v1:蕴含与批处理和相似作业的工作相干的对象,如:job、cronjob。autoscaling/v1:容许依据不同的资源应用指标主动调整容器。networking.k8s.io/v1:用于 Ingress。rbac.authorization.k8s.io/v1:用于 RBAC
$ kubectl api-versions
admissionregistration.k8s.io/v1
apiextensions.k8s.io/v1
apiregistration.k8s.io/v1
apps/v1
authentication.k8s.io/v1
authorization.k8s.io/v1
autoscaling/v1
autoscaling/v2
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1
coordination.k8s.io/v1
discovery.k8s.io/v1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
flowcontrol.apiserver.k8s.io/v1beta2
networking.k8s.io/v1
node.k8s.io/v1
node.k8s.io/v1beta1
openebs.io/v1alpha1
policy/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
scheduling.k8s.io/v1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

kind

 解释: 资源对象的类型
如 pod、deployment、statefulset、job、cronjob

metadata

 罕用的配置项有 name,namespace
name 配置资源对象显示的名字
namespace 配置归属的命名空间 

spec

 解释: 资源对象的具体资源清单 
// 以 pod 为例
apiVersion: v1 #必选,版本号,例如 v1
kind: Pod #必选,Pod 
metadata: #必选,元数据 
  name: nginx #必选,Pod 名称 
  labels: #自定义标签 
     app: nginx #自定义标签名字 
spec: #必选,Pod 中容器的具体定义 
     containers: #必选,Pod 中容器列表,一个 pod 里会有多个容器 
        - name: nginx #必选,容器名称 
          image: nginx #必选,容器的镜像名称 
          imagePullPolicy: IfNotPresent # [Always | Never | IfNotPresent] #获取镜像的策略 Alawys 示意下载镜像 IfnotPresent 示意优先应用本地镜像,否则下载镜像,Nerver 示意仅应用本地镜像 
          ports: #须要裸露的端口库号列表 
          - containerPort: 80 #容器须要监听的端口号 
     restartPolicy: Always # [Always | Never | OnFailure]#Pod 的重启策略,Always 示意一旦不论以何种形式终止运行,kubelet 都将重启,OnFailure 示意只有 Pod 以非 0 退出码退出才重启,Nerver 示意不再重启该 Pod 
// 以 Service 为例
apiVersion: v1
kind: Service
metadata:
  name: service-hello
  labels:
  name: service-hello
spec:
  type: NodePort      #这里代表是 NodePort 类型的, 另外还有 ingress,LoadBalancer
  ports:
  - port: 80          #这里的端口和 clusterIP(kubectl describe service service-hello 中的 IP 的 port) 对应,即在集群中所有机器上 curl 10.98.166.242:80 可拜访公布的应用服务。targetPort: 8080  #端口肯定要和 container 裸露进去的端口对应,nodejs 裸露进去的端口是 8081,所以这里也应是 8081
    protocol: TCP     # 反对 TCP UDP SCTP
    nodePort: 31111   # 所有的节点都会凋谢此端口 30000--32767,此端口供内部调用。selector:
    run: hello         #这里选择器肯定要抉择容器的标签,之前写 name:kube-node 是错的。

port

clusterIp:k8s 集群外部拜访 service 的端口,即通过 clusterIP: port 能够拜访到某个 service
nodePort:k8s 集群内部拜访 service 的端口,通过 nodeIP: nodePort 能够从内部拜访到某个 service。targetPort:pod 的端口,从 port 和 nodePort 来的流量通过 kube-proxy 流入到后端 pod 的 targetPort 上,最初进入容器。containerPort:containerPort 是 pod 外部容器的端口,targetPort 映射到 containerPort
退出移动版