使用Kubernetes(Azure-AKS)部署项目

kyvafyod  于 5个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(71)

我正在为我的研究做一个项目。我应该创建和部署一个应用程序,我已经决定用AKS来做这件事(因为我们有一些预付费的学分)。我可以使用Minikube在本地运行我的部署,但我无法将其部署到AKS。你能帮助我吗?
以下是我的部署文件:app-ns.yml(用于创建命名空间):

apiVersion: v1
kind: Namespace
metadata:
  name: pm

字符串
ab.yml(用于部署数据库):

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgresql-db
  labels:
    app: pm-proc
    tier: database
  namespace: pm
spec:
  serviceName: postgresql-db-service
  selector:
    matchLabels:
      component: postgresql-db
  replicas: 1
  template:
    metadata:
      labels:
        component: postgresql-db
    spec:
      containers:
        - name: postgresql-db
          image: postgres:15
          volumeMounts:
            - name: postgresql-db-disk
              mountPath: /data
          env:
            - name: POSTGRESS_DB
              value: postgres
            - name: POSTGRES_USER
              value: postgres
            - name: POSTGRES_PASSWORD
              value: postgres
            - name: PGDATA
              value: /data/pgdata
  volumeClaimTemplates:
    - metadata:
        name: postgresql-db-disk
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 10Gi
---
apiVersion: v1
kind: Service
metadata:
  name: postgres-db-svc
  namespace: pm
spec:
  selector:
    component: postgresql-db
  ports:
    - port: 5432
      targetPort: 5432


API.yml(用于部署后端):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-deploy
  labels:
    app: pm-proc
    tier: backend
    component: api
  namespace: pm
spec:
  selector:
    matchLabels:
      app: pm-proc
      tier: backend
  template:
    metadata:
      labels:
        app: pm-proc
        tier: backend
        component: api
    spec:
      containers:
        - name: api
          image: madzlk/backend-api:latest
          ports:
            - containerPort: 8080
          env:
            - name: DB_SERVICE_HOST
              value: $(POSTGRES_DB_SVC_SERVICE_HOST)
            - name: DB_SERVICE_PORT
              value: "5432"
            - name: DB_USER
              value: "postgres"
            - name: DB_PASSWORD
              value: "postgres"
            - name: DB_DATABASE
              value: "postgres"
  replicas: 2

---
apiVersion: v1
kind: Service
metadata:
  name: api-svc
  namespace: pm
spec:
  selector:
    app: pm-proc
    tier: backend
    component: api
  ports:
    - port: 8080
      targetPort: 8080


api-np-svc.yml(创建一个服务,使API可以从外部访问):

apiVersion: v1
kind: Service
metadata:
  name: api-np-svc
  namespace: pm
spec:
  type: NodePort
  selector:
    app: pm-proc
    tier: backend
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 30080


这只是API的一部分,当一切都设置好了,它应该显示一个空列表
我已经将NodePort类型的pod更改为Loadbalancer,因为我读到这是AKS首选的方式,但它没有帮助。

zfycwa2u

zfycwa2u1#

请修改您的YAML如下部署Postgre上AKS

  • PVC*
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-postgre
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-premium
resources:
requests:
storage: 1Gi

字符串

部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgresdb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgresdb
  template:
    metadata:
      labels:
        app: postgresdb
    spec:
      containers:
      - name: postgresdb
        image: postgres:latest
        ports:
        - containerPort: 5432
        env:
        - name: POSTGRES_USER
          value: postgresuser
        - name: POSTGRES_PASSWORD
          value: postgrespwd
        - name: POSTGRES_DB
          value: postgresdb
        - name: PGDATA
          value: /var/lib/postgresql/backup
        volumeMounts:
        - name: database
          mountPath: /var/lib/postgresql
          subPath: backup
      volumes:
      - name: database
        persistentVolumeClaim:
          claimName: pvc-postgre


使用相同的方法。

kubectl apply -f <the-yaml-file-name>


现在执行kubectl get pods | grep post

  • 输出 *

现在,您可以使用

kubectl exec -it <your-postgresdb-pod-name> --psql -h localhost -U <the_username_which_you_kept_in_the_yaml> --password -p 5432 postgresdb

  • 输出 *

你可以使用下面的yaml通过负载平衡器类型的服务公开pod

  • 服务 *
apiVersion: v1
kind: Service
metadata:
  name: postgres-db-lb
spec:
  selector:
    app: postgresdb
  type: LoadBalancer
  ports:
    - port: 5432


使用kubectl apply -f <service-yaml-file-name>应用相同的方法现在执行kubectl get svc | grep postgres-db-lb #注意,这将是您在服务yaml中保留的任何名称 * 输出 *

您现在可以使用此LB IP连接到pgadmin UI tool



参考文件:
GitHub_PostgresOnAKS
Deploying PostgreSQL as a StatefulSet

相关问题