apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: redis   
  name: ssx-redis-dm
  namespace: ssx
spec:
  replicas: 1 
  selector: #标签选择器,与上面的标签共同作用
    matchLabels: #选择包含标签app:mysql的资源
       app: redis
  template: #这是选择或创建的Pod的模板
    metadata: #Pod的元数据
      labels: #Pod的标签,上面的selector即选择包含标签app:mysql的Pod
        app: redis
    spec: #期望Pod实现的功能(即在pod中部署)
      containers: #生成container,与docker中的container是同一种
      - name: ssx-redis-c
        image: node102:5000/ssx-redis:v1.0
        #command: [string] 
        # 容器启动命令列表,相当于Dockerfile中的ENDRYPOINT,是唯一的。如果不指定,就是使用容器本身的。示例:["/bin/sh","-c"]
        args: ["--requirepass 密码"] 
        # 容器启动参数列表,相当于Dockerfile中的CMD,示例:["-c"]
        ports:
        - containerPort: 6379  # 开启本容器的80端口可访问
        volumeMounts:
        - mountPath: /data   #这是mysql容器内保存数据的默认路径
          name: c-v-path-redis
      volumes:
      - name: c-v-path-redis #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /root/apps/k8s/for_docker_volume/redis  #此路径需要实现创建 注意要给此路径授权777权限 不然pod访问不到
      nodeSelector: #把此pod部署到指定的node标签上
        kubernetes.io/hostname: node101
---
apiVersion: v1
kind: Service
metadata:
  labels:
   app: redis
  name: ssx-redis-sv
  namespace: ssx
spec:
  ports:
  - port: 9000 #我暂时不理解,这个设置 明明没用到?
    name: ssx-redis-last
    protocol: TCP
    targetPort: 6379 # 容器nginx对外开放的端口 上面的dm已经指定了
    nodePort: 30400 #外网访问的端口
  selector:
    app: redis
  type: NodePort 
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐