k8s部署home-assistant

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: homeassistant
  name: ssx-homeassistant-dmsv
  namespace: ssx
spec:
  replicas: 1
  selector: #标签选择器,与上面的标签共同作用
    matchLabels: #选择包含标签app:mysql的资源
      app: homeassistant
  template: #这是选择或创建的Pod的模板
    metadata: #Pod的元数据
      labels: #Pod的标签,上面的selector即选择包含标签app:mysql的Pod
        app: homeassistant
    spec: #期望Pod实现的功能(即在pod中部署)
      hostNetwork: true
      dnsPolicy: "ClusterFirstWithHostNet"
      hostAliases: #给pod添加hosts网络
        - ip: "192.168.0.101"
          hostnames:
            - "node101"
        - ip: "192.168.0.102"
          hostnames:
            - "node102"
        - ip: "192.168.0.103"
          hostnames:
            - "node103"
      containers: #生成container,注意此pod部署了zookeeper和kafka.因为后者依赖前者。逻辑上来说需要有启动顺序,如果kafka启动报错未连接到zk,但是kebernetes会重启kafka容器
        - name: ssx-homeassistant-c
          image: ghcr.io/home-assistant/home-assistant:stable  #配置阿里的镜像,直接pull即可
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8123  # 开启本容器的80端口可访问 对外提供服务client客户端
          volumeMounts:
            - mountPath: /config   #这是mysql容器内保存数据的默认路径
              name: c-v-path-config-conf
            - mountPath: /media/cdrom   #这是mysql容器内保存数据的默认路径
              name: c-v-path-mediacdrom-conf
            - mountPath: /etc/localtime   #这是mysql容器内保存数据的默认路径
              name: c-v-path-lt
          env:   #容器运行前需设置的环境变量列表
            - name: TZ  #环境变量名称
              value: "Asia/Shanghai" #环境变量的值 这是mysqlroot的密码 因为是纯数字,需要添加双引号 不然编译报错
      volumes:
        - name: c-v-path-config-conf #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
          hostPath:
            path: /home/app/apps/k8s/for_docker_volume/homeassistant/config  #此路径需要实现创建 注意要给此路径授权777权限 不然pod访问不到
        - name: c-v-path-mediacdrom-conf #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
          hostPath:
            path: /home/app/apps/k8s/for_docker_volume/homeassistant/media/cdrom  #此路径需要实现创建 注意要给此路径授权777权限 不然pod访问不到
        - name: c-v-path-lt
          hostPath:
            path: /etc/localtime   #时间同步
      nodeSelector: #把此pod部署到指定的node标签上
        kubernetes.io/hostname: node101
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: homeassistant
  name: ssx-homeassistant-dmsv
  namespace: ssx
spec:
  ports:
    - port: 9000 #我暂时不理解,这个设置 明明没用到?
      name: ssx-homeassistant-last9000
      protocol: TCP
      targetPort: 8123 # 容器nginx对外开放的端口 上面的dm已经指定了
      nodePort: 30810 #外网访问的端口 k8s集群 nodePort 分配的端口范围为:30000-32767
  selector:
    app: homeassistant
  type: NodePort

猜你喜欢

转载自blog.csdn.net/weixin_48835367/article/details/131851314