k8s创建新项目实例模板

record 参数

kubectl   create  -f  muban.yaml  --record=true

#record参数可以通过命令查询发布历史版本
kubectl   rollout  history  deploy  tomcat  -n tomcat

tomcat服务实例编排tomcat.yaml内容

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat
  namespace: tomcat
  labels:
    app: tomcat
spec:
  replicas: 2
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      name: tomcat
      app: tomcat
  template:
    metadata:
      labels:
        name: tomcat
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: harbor.wmmzz.com/library/tomcat:v1
        volumeMounts:
        - mountPath: /opt/tomcat/logs
          name: tomcat
        ports:
        - containerPort: 8080
          name: tomcat
        resources:
          requests:
            cpu: 1
            memory: 512Mi
          limits:
            cpu: 2
            memory: 2G
      volumes:
      - name: tomcat
        hostPath:
          path: /opt/logs
          type: Directory
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat
  namespace: tomcat
  labels:
    app: tomcat
spec:
  type: NodePort
  selector:
    name: tomcat
    app: tomcat
  ports:
  - name: tomcat
    port: 8080
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: tomcat
  namespace: tomcat
  labels:
    app: tomcat
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: tomcat
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50

mysql服务实例编排文件mysql-muban.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-muban
  namespace: mysql
  labels:
    app: mysql-muban
spec:
  replicas: 1
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: mysql-muban
  template:
    metadata:
      labels:
        app: mysql-muban
    spec:
      containers:
      - name: mysql-muban
        image: mysql:v5.7.22
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysqldb-muban
        - mountPath: /etc/mysql
          name: mysqlconf-muban
        env:
        - name: TZ
          value: Asia/Shanghai
        - name: MYSQL_ROOT_PASSWORD
          value: Root123+
        ports:
        - containerPort: 3306
          name: mysql-muban
        resources:
          requests:
            cpu: 1
            memory: 1G
          limits:
            cpu: 4
            memory: 4G
      volumes:
      - name: mysqldb-muban
        hostPath:
          path: /data/mysql/muban/mysqldb
          type: Directory
      - name: mysqlconf-muban
        hostPath:
          path: /data/mysql/muban/conf
          type: Directory
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: effect
                operator: In
                values:
                - mysql
      tolerations:     
        - key: "key"  
          operator: "Equal"  
          value: "value"  
          effect: NoExecute
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-muban
  namespace: mysql
  labels:
    app: mysql-muban
spec:
  type: NodePort
  selector:
    app: mysql-muban
  ports:
  - port: 3306
    nodePort: 33307

redis服务实例编排文件redis-muban.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-muban
  namespace: redis
  labels:
    app: redis-muban
spec:
  replicas: 1
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: redis-muban
  template:
    metadata:
      labels:
        app: redis-muban
    spec:
      containers:
      - name: redis-muban
        image: redis:3.2
        ports:
        - containerPort: 6379
          name: redis-muban
        resources:
          requests:
            cpu: 1
            memory: 1G
          limits:
            cpu: 4
            memory: 4G
---
apiVersion: v1
kind: Service
metadata:
  name: redis-muban
  namespace: redis
  labels:
    app: redis-muban
spec:
  selector:
    app: redis-muban
  ports:
  - port: 6379

rabbitmq服务实例编排文件rabbitmq-muban.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq-muban
  namespace: rabbitmq
  labels:
    app: rabbitmq-muban
spec:
  replicas: 1
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: rabbitmq-muban
  template:
    metadata:
      labels:
        app: rabbitmq-muban
    spec:
      containers:
      - name: rabbitmq-muban
        image: registry.cn-hangzhou.aliyuncs.com/wmmzz/rabbitmq:v3.9.11
        ports:
        - containerPort: 5672
          name: rabbitmq-5672
        - containerPort: 15672
          name: rabbitmq-15672
        resources:
          requests:
            cpu: 1
            memory: 1G
          limits:
            cpu: 4
            memory: 4G
---
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq-muban
  namespace: rabbitmq
  labels:
    app: rabbitmq-muban
spec:
  selector:
    app: rabbitmq-muban
  ports:
  - port: 5672
    name: rabbitmq-muban
---
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq-15673
  namespace: rabbitmq
  labels:
    app: rabbitmq-15673
spec:
  type: NodePort
  selector:
    app: rabbitmq-muban
  ports:
  - port: 15672
    name: rabbitmq-15673
    nodePort: 15673
Kubernetes (k8s) 是一个开源容器管理系统,它可以帮助管理和调度 Docker 容器化的应用。在一个典型的 k8s + Docker 项目的实例中,通常包括以下几个步骤: 1. **Docker镜像构建**:首先,你需要创建一个 Dockerfile,它包含了应用程序的依赖、配置和服务启动命令。当你运行 `docker build` 命令时,会根据这个文件生成一个 Docker 镜像。 ```shell # Dockerfile示例 FROM node:14-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"] ``` 2. **Docker镜像推送**:构建完成后,你可以将镜像推送到一个公共仓库(如 Docker Hub 或私有 registry),以便后续部署使用。 ```shell docker login docker push your_username/your_app_image ``` 3. **Kubernetes资源定义**:然后在 Kubernetes 中,通过 YAML 文件(比如 deployment.yaml 或 service.yaml)定义服务的规格,例如 Deployment 描述了应用副本数和每个副本所使用的镜像,Service 则定义了服务的访问策略。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: your_username/your_app_image ports: - containerPort: 3000 --- apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 3000 type: LoadBalancer ``` 4. **部署到k8s集群**:最后,使用 `kubectl apply` 命令将 YAML 文件应用到集群中,Kubernetes 就会自动拉取镜像并按照描述来部署你的应用。 ```shell kubectl apply -f deployment.yaml kubectl apply -f service.yaml ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值