经过以下命令直接执行html
oc create -f nginx.yml
nginx.ymlnode
apiVersion: v1 items: - apiVersion: apps.openshift.io/v1 # okd 部署配置(dc),与 k8s Deployment 资源对象相似,以启动多个容器的方式生成 pod kind: DeploymentConfig metadata: # 标签,在查询时具体资源对象时很是重要,如:>oc get dc -l app=nginx labels: app: nginx name: nginx # 选定项目空间 namespace: test spec: # 副本数,即 nginx app 部署的实例数 replicas: 1 # pod 的计算资源配额 resources: # pod 能分配的最大计算资源 limits: cpu: 300m memory: 1024Mi # pod 分配的最少计算资源 requests: cpu: 100m memory: 200Mi # 选择器 Service 根据此项来绑定到 dc selector: name: nginx strategy: # type: Recreate type: Rolling # dc 根据模板里内容建立 pod template: metadata: labels: app: nginx name: nginx deploymentconfig: nginx spec: # 容器集合 containers: - capabilities: {} # 容器内环境变量,下文给这个容器设置了时区和语言的环境变量 env: - name: TZ value: Asia/Shanghai - name: LANG value: en_US.UTF-8 # 容器使用什么镜像部署,在建立时须要替换成实际要部署的镜像 image: nginx:1.16 # 镜像下载策略,老是下载最新的(Always) imagePullPolicy: IfNotPresent ports: - containerPort: 80 protocol: TCP # 健康检查-pod 是否存活 livenessProbe: failureThreshold: 2 # http get 请求的方式验证 pod-ip:80/ httpGet: path: / port: 80 initialDelaySeconds: 60 periodSeconds: 60 timeoutSeconds: 5 name: nginx # 健康检查-pod 是否就绪 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 3 timeoutSeconds: 5 # 容器计算资源配额,与 pod 配额相似 resources: limits: cpu: 300m memory: 1024Mi requests: cpu: 100m memory: 200Mi securityContext: capabilities: {} # privileged: true terminationMessagePath: /dev/termination-log # 将 pod 中配置的卷挂载到容器内 # volumeMounts: # - mountPath: /data # name: nginx dnsPolicy: ClusterFirst # 使用节点选择器将应用固定部署到 node1 计算节点上 # nodeSelector: # kubernetes.io/hostname: node1.app.com restartPolicy: Always # 配置和定义使用实际计算节点主机文件夹地址这种类型的卷 # volumes: # - persistentVolumeClaim: # claimName: nginx # name: nginx # pod 触发器--配置变更触发更新 triggers: - type: ConfigChange - apiVersion: v1 # 服务,与 k8s 中 service 同样,将 dc 上部署的应用暴露给内部(多)或外部(少) kind: Service metadata: labels: app: nginx name: nginx spec: # 应用中要暴露的端口信息 ports: - name: http # 对外暴露的端口 port: 80 protocol: TCP # 应用实际端口 targetPort: 80 # 经过选择器选择 dc selector: name: nginx sessionAffinity: None type: ClusterIP - apiVersion: route.openshift.io/v1 # OKD 平台特有资源,与 k8s 中 ingress 相似,用于将 service 正真暴露给外部使用,但只能使用域名访问 kind: Route metadata: labels: app: nginx name: nginx spec: # 配置域名 host: xinchen.app.com to: kind: Service name: nginx kind: List metadata: {}
参考文档: https://docs.okd.io/latest/dev_guide/templates.html#writing-templatesnginx
相关指令api
# 上传模板 oc create -f <filename> -n <project> # 使用模板 oc process -f nginx-template -p IMAGE_NAME=nginx:1.6 -p REPLICA_COUNT=1 # 编辑模板 oc edit template <templateName> # 导出模板 oc get -o yaml --export all > <yaml_filename>
nginx-template.ymlbash
kind: Template apiVersion: v1 metadata: name: nginx-template objects: - kind: DeploymentConfig apiVersion: v1 metadata: name: nginx namespace: xinchen labels: app: nginx spec: replicas: ${REPLICA_COUNT} selector: name: nginx resources: limits: cpu: 300m memory: 1024Mi requests: cpu: 100m memory: 200Mi strategy: type: Rolling template: metadata: labels: app: nginx name: nginx deploymentconfig: nginx spec: containers: - capabilities: {} env: - name: TZ value: Asia/Shanghai - name: LANG value: en_US.UTF-8 image: ${IMAGE_NAME} imagePullPolicy: IfNotPresent ports: - containerPort: 80 protocol: TCP livenessProbe: failureThreshold: 2 httpGet: path: / port: 80 initialDelaySeconds: 60 periodSeconds: 60 timeoutSeconds: 5 name: nginx readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 3 timeoutSeconds: 5 resources: limits: cpu: 300m memory: 1024Mi requests: cpu: 100m memory: 200Mi securityContext: capabilities: {} # privileged: true terminationMessagePath: /dev/termination-log # volumeMounts: # - mountPath: /data # name: nginx dnsPolicy: ClusterFirst restartPolicy: Always # volumes: # - persistentVolumeClaim: # claimName: nginx # name: nginx # pod 触发器--配置变更触发更新 triggers: - type: ConfigChange - kind: Service apiVersion: v1 metadata: name: nginx labels: app: nginx spec: ports: - name: 80-tcp port : 80 protocol: TCP targetPort: 80 selector: name: nginx sessionAffinity: None type: ClusterIP - apiVersion: route.openshift.io/v1 kind: Route metadata: labels: app: nginx name: nginx spec: host: ${HOST_NAME} port: targetPort: 80-tcp to: kind: Service name: nginx weight: 100 parameters: - name: HOST_NAME displayName: Host Name required: true - name: IMAGE_NAME displayName: Image Name required: true - name: REPLICA_COUNT displayName: Replica Count value: "1" required: true
参考: https://docs.okd.io/latest/dev_guide/ssh_environment.htmlsession
# 查看pod名 oc get pods # 进入容器 oc rsh <pod> # 或者直接进入dc oc rsh dc/nginx
# 删除全部 oc delete all -l app=nginx