K8s部署常用服务

部署mysql

编写mysql的yaml

可以使用echo -n MTIzNDU2Nw== | base64 --decode 解密
可以使用echo 1234567 | base64对字符串加密

apiVersion: v1
kind: Namespace
metadata:
  name: dev
  labels:
    name: dev
--
apiVersion: v1
data:
  password: MTIzNDU2Nw==
kind: Secret
metadata:
  name: mysql-root-password
  namespace: dev
type: Opaque
--
# 定义mysql的Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql
  name: mysql
  namespace: dev
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:8.0
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-root-password
              key: password
          # 如果你不想使用secret对象保存mysql登录密码,可以直接使用下面的方式指定,简单粗暴未尝不可
          #value: "123456"
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysqlvolume
          mountPath: /var/lib/mysql
      volumes:
      - name: mysqlvolume
        hostPath:
		  path: /data/mysql-clz/data
          type: DirectoryOrCreate
---
#定义mysql的Service
apiVersion: v1
kind: Service
metadata:
  labels:
    app: svc-mysql
  name: svc-mysql
  namespace: dev
spec:
  selector:
    app: mysql
  type: NodePort
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
    nodePort: 31234 #指定暴露的端口

测试

我们就可以通过连接工具来连接刚才部署的mysql服务

部署mq

编写mq的yaml

可以使用`echo -n UEA4OHcwcmQ= | base64 --decode` 解密 可以使用 `echo admin | base64` 对字符串加密

** 使用下面的yaml文件创建mq服务**

---
kind: Secret
apiVersion: v1
metadata:
  name: mq-secret
  namespace: dev
data:
  pass: UEA4OHcwcmQ=
  user: YWRtaW4=
type: Opaque

---
# 定义mysql的Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq
  namespace: dev
  labels:
    app: rabbitmq
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rabbitmq
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: rabbitmq
    spec:
      volumes:
        - name: host-time
          hostPath:
            path: /etc/localtime
            type: ''
      containers:
        - name: rabbitmq
          image: '10.10.10.62:6000/rabbitmq:3-management'
          ports:
            - name: tcp-5672
              containerPort: 5672
              protocol: TCP
            - name: http-15672
              containerPort: 15672
              protocol: TCP
          env:
            - name: RABBITMQ_DEFAULT_USER
              valueFrom:
                secretKeyRef:
                  name: mq-secret
                  key: user
            - name: RABBITMQ_DEFAULT_PASS
              valueFrom:
                secretKeyRef:
                  name: mq-secret
                  key: pass
              volumeMounts:
                - mountPath: /bitnami/redis/data
                  name: data
      volumes:
        - name: data
          hostPath:
            path: /data/redis-clz/data
            type: DirectoryOrCreate
---
#定义mq的Service
apiVersion: v1
kind: Service
metadata:
  labels:
    app: rabbitmq
  name: rabbitmq
  namespace: dev
spec:
  ports:
    - name: 5672-5672
      port: 5672
      protocol: TCP
      targetPort: 5672
    - name: 15672-15672
      port: 15672
      protocol: TCP
      targetPort: 15672
  selector:
    app: rabbitmq
  type: NodePort

部署redis

编写redis的yaml

通过下面的yaml文件创建redis服务

---
kind: ConfigMap
apiVersion: v1
metadata:
  name: redis-config
  namespace: default
  labels:
    app: redis
data:
  redis.conf: |-
    dir /data
    port 6379
    bind 0.0.0.0
    appendonly yes
    protected-mode no
    requirepass 123
    pidfile /data/redis-6379.pid

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  namespace: dev
  labels:
    app: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
        - name: redis
          image: 10.10.10.62:6000/redis:5.0.7
          command:
            - "sh"
            - "-c"
            - "redis-server /usr/local/etc/redis/redis.conf"
          ports:
            - containerPort: 6379
          resources:
            limits:
              cpu: 1000m
              memory: 1024Mi
            requests:
              cpu: 1000m
              memory: 1024Mi
          livenessProbe:
            tcpSocket:
              port: 6379
            initialDelaySeconds: 300
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          readinessProbe:
            tcpSocket:
              port: 6379
            initialDelaySeconds: 5
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          volumeMounts:
            - name: data
              mountPath: /data
            - name: config
              mountPath: /usr/local/etc/redis/redis.conf
              subPath: redis.conf
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: pvc-redis
        - name: config
          configMap:
            name: redis-config
        - name: sys
          hostPath:
            path: /sys
---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: redis
  name: redis
  namespace: dev
spec:
  ports:
    - name: 6379-6379
      port: 6379
      protocol: TCP
      targetPort: 36379
  selector:
    app: redis
  type: NodePort

部署业务服务

下面是服务之外服务的部署方法,这里面又分了二种情况:一是只需要暴露端口的服务,二是同时暴露端口和映射数据卷的服务。

1.只需要暴露端口的服务的部署

这类服务的部署可参考下面的yaml文件,只需要进行简单的修改即可。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: gateway  # Deployment的标签
  name: gateway   # Deployment的名称
  namespace: luckyun-react #名称空间,根据自己当前部署的情况进行修改
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gateway #选择包含标签app:gateway的资源
  template:
    metadata:
      labels:
        app: gateway #Pod的标签,上面的selector即选择包含标签app:gateway的Pod
    spec:
      containers:
	  # 环境变量,配置同Rancher
        - env:
            - name: SPRING_PROFILES_ACTIVE
              value: test
            - name: EUREKA_PORT
              value: "32520"
            - name: EUREKA_HOST
              value: 10.10.10.113
			  # 该服务使用的镜像
          image: 10.10.10.62:6000/com-luckyun-gateway-admin:2.6.9-RELEASE
          imagePullPolicy: IfNotPresent
          name: gateway
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: gateway  #Service 自己的标签
  name: gateway   #Service 的名称
  namespace: luckyun-react   #名称空间,根据自己当前部署的情况进行修改
spec:
  ports:
    - name: 31006-31006
      port: 31006
      protocol: TCP
      targetPort: 31006  #通过任意节点的 31006 端口访问 Service
  selector:
    app: gateway   #选择包含标签 app:gateway 的 Pod
  type: NodePort

2.既要暴露端口,又要挂载数据卷的服务的部署

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: report  # Deployment的标签
  name: report   # Deployment的名称
  namespace: luckyun-react   #名称空间,根据自己当前部署的情况进行修改
spec:
  replicas: 1
  selector:
    matchLabels:
      app: report  #选择包含标签app:report的资源
  template:
    metadata:
      labels:
        app: report   #Pod的标签,上面的selector即选择包含标签app:report的Pod
    spec:
      containers:
	   # 环境变量,配置同Rancher
        - env:
            - name: SPRING_PROFILES_ACTIVE
              value:  test
            - name: EUREKA_PORT
              value: "32520"
            - name: EUREKA_HOST
              value: 10.10.10.113
          image: 10.10.10.62:6000/com-luckyun-report-admin:1.1.5-CESHI-3
          imagePullPolicy: IfNotPresent
          name: report
		   # 数据卷挂载
          volumeMounts:
            - mountPath: /data/upload_temp # 容器路径
              name: data  # 数据卷名称
      volumes:
        - name: data  # 数据卷名称
          hostPath:
            path: /data/app/test-luckyun-v2/upload_temp  # 映射的主机目录
            type: DirectoryOrCreate  # 数据卷类型
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: report
  name: report
  namespace: luckyun-react
spec:
  ports:
    - name: 31008-31008
      port: 31008
      protocol: TCP
      targetPort: 31008
  selector:
    app: report
  type: NodePort
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值