k8s记录-k8s常用对象(Object)类型
3. k8s常用对象(Object)类型
3.1. deployment
主要用于部署pod,支持滚动升级。
apiVersion: apps/v1 #对象类型 kind: Deployment metadata: name: nginx-deployment #deployment名字 labels: app: nginx #deployment标签,可以自由定义 spec: replicas: 3 #pod 副本数量 selector: #pod选择器定义,主要用于定义根据什么标签搜索需要管理的pod matchLabels: app: nginx #pod标签 template: #pod模版定义 metadata: labels: #pod 标签定义 app: nginx spec: containers: #容器数组定义 - name: nginx #容器名 image: nginx:1.7.9 #镜像地址 command: #容器启动命令,【可选】 - /alidata/www/scripts/start.sh ports: #定义容器需要暴露的端口 - containerPort: 80 env: #环境变量定义【可选】 - name: CONSOLE_URL #变量名 value: https://www.xxx.com #变量值
3.2. service
服务定义,主要用于暴露pods容器中的服务。
apiVersion: v1 #对象类型 kind: Service metadata: name: my-service #服务名 spec: selector: #pod选择器定义,由这里决定请求转发给那些pod处理 app: nginx #pod 标签 ports: #服务端口定义 - protocol: TCP #协议类型,主要就是TCP和UDP port: 80 # 服务端口 targetPort: 80 #pod 容器暴露的端口
3.3. ingress
http路由规则定义,主要用于将service暴露到外网中
apiVersion: extensions/v1beta1 #对象类型 kind: Ingress metadata: name: my-ingress #ingress应用名 spec: rules: #路由规则 - host: www.xxx.com #域名 http: paths: #访问路径定义 - path: / #代表所有请求路径 backend: #将请求转发至什么服务,什么端口 serviceName: my-service #服务名 servicePort: 80 #服务端口
3.4. ConfigMap
主要用于容器配置管理。
apiVersion: v1 kind: ConfigMap metadata: name: my-config #配置项名字 data: key1: value1 key2: value2
定义完配置后,可以通过以下方式在容器中应用配置:
#通过环境变量注入配置 apiVersion: v1 kind: Pod metadata: name: config-pod-1 spec: containers: - name: test-container image: busybox command: [ "/bin/sh", "-c", "env" ] env: - name: SPECIAL_LEVEL_KEY ## 环境变量 valueFrom: ##使用valueFrom来指定env引用配置项的value值 configMapKeyRef: name: my-config ##引用的配置文件名称 key: key1 ##引用的配置项key restartPolicy: Never
#通过数据卷注入配置 apiVersion: v1 kind: Pod metadata: name: config-pod-4 spec: containers: - name: test-container image: busybox command: [ "/bin/sh", "-c", "ls /etc/config/" ] ##列出该目录下的文件名 volumeMounts: - name: config-volume #配置项名字 mountPath: /etc/config #容器中的挂载目录 volumes: #数据卷定义 - name: config-volume #数据卷名 configMap: #数据卷类型 name: my-config #配置项名字 restartPolicy: Never