apiVersion: apps/v1 #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本 kind: Deployment #该配置的类型,我们使用的是 Deployment metadata: #译名为元数据,即 Deployment 的一些基本属性和信息 name: nginx-deployment #Deployment 的名称 labels: #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解 app: nginx #为该Deployment设置key为app,value为nginx的标签 spec: #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用 replicas: 1 #使用该Deployment创建一个应用程序实例,创建几个pod selector: #标签选择器,与上面的标签共同作用,目前不需要理解 matchLabels: #选择包含标签app:nginx的资源 app: nginx template: #这是选择或创建的Pod的模板 metadata: #Pod的元数据 labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Pod app: nginx spec: #期望Pod实现的功能(即在pod中部署) containers: #生成container,k8s中的pod与多个docker容器共享一个Network namespace。 - name: nginx #container的名称
imagePullPolicy: Always image: nginx:1.8.0 #使用镜像nginx:1.8.0创建container,该container默认80端口可访问
---
apiVersion: v1 ##版本号
kind: Service ##服务类型
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort ##端口映射
ports:
- port: 80 ##内部端口
targetPort: 80 ##映射端口
selector: ##选择器/
app: nginx
#imagePullPolicy: IfNotPresent
#Always:每次都检查,如果镜像更新了就拉取新的镜像 Never:每次都不检查,使用本地的镜像,如果不存在就报异常 IfNotPresent,如果本地有就不检查,如果没有就拉取
HTML文件开头需要编写标签信息,对应不同资源信息 [root@k8s_master ~]# kubectl api-versions admissionregistration.k8s.io/v1beta1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1 apiregistration.k8s.io/v1beta1 apps/v1 ##应用资源 apps/v1beta2 ##测试版本 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/v1beta1 coordination.k8s.io/v1beta1 events.k8s.io/v1beta1 extensions/v1beta1 networking.k8s.io/v1 policy/v1beta1 rbac.authorization.k8s.io/v1 ##权限控制资源 rbac.authorization.k8s.io/v1beta1 scheduling.k8s.io/v1beta1 storage.k8s.io/v1 storage.k8s.io/v1beta1 v1
k8s 指定node调度
指定标签
spec:
nodeSelector:
unioj-role: judgers
kubectl label nodes k8s-node2 unioj-role=judgers 打标签
nodename调度
spec:
nodeName: k8s-node2
restartPolicy: Always #表示自动重启,一直都会有这个容器运行