oracle19c的k8s部署

前提条件

1、首先要有一个oracle 账号

2、需要一台能连接网络并安装docker的机器用Oracle账号登录Home

点击database 跳转到下一个页面

记得一定sign in ,否则无法拉取镜像

复制代码
docker pull
container-registry.oracle.com/database/enterprise:latest

执行拉取后使用镜像进行部署

oracle-dplm.yml

复制代码
apiVersion: v1
kind: Namespace
metadata:
  name: test-oracle

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: oracle-init-script
  namespace: test-oracle
data:
  init.sh: |
    # 这里粘贴你的init.sh脚本内容
    echo "non-cdb setup"

    sed -i -e 's/^createAsContainerDatabase=.*/createAsContainerDatabase=false/g' \n    -e 's/^numberOfPDBs=.*/numberOfPDBs=0/g' \n    -e 's/^emConfiguration=.*/emConfiguration=NONE/g' \n    -e 's/^pdbName=###ORACLE_PDB###/#pdbName=###ORACLE_PDB###/g'  \n    -e 's/^pdbAdminPassword=###ORACLE_PWD###/#pdbAdminPassword=###ORACLE_PWD###/g' \n    /opt/oracle/dbca.rsp.tmpl

    sed -i -e 's/ALTER PLUGGABLE DATABASE/-- ALTER PLUGGABLE DATABASE/g' \n    -e 's/EXEC DBMS_XDB_CONFIG/-- EXEC DBMS_XDB_CONFIG/g'  \n    /opt/oracle/createDB.sh

    sed -i -e 's/pdbs;/database;/g' /opt/oracle/checkDBStatus.sh

    egrep 'createAsContainerDatabase=|numberOfPDBs=|emConfiguration=|pdbName=|pdbAdminPassword=' /opt/oracle/dbca.rsp.tmpl

    grep 'ALTER PLUGGABLE DATABASE' /opt/oracle/createDB.sh
    grep DBMS_XDB_CONFIG /opt/oracle/createDB.sh

    grep database /opt/oracle/checkDBStatus.sh

    echo "run /opt/oracle/runOracle.sh"

    bash /opt/oracle/runOracle.sh

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: oracle-oradata-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: /home/testoraclepvc


---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: oracle-oradata-pvc
  namespace: test-oracle
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi


---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: oracle-deployment
  namespace: test-oracle
spec:
  replicas: 1
  selector:
    matchLabels:
      app: oracle
  template:
    metadata:
      labels:
        app: oracle
    spec:
      containers:
      - name: oracle
        image: container-registry-tokyo.oracle.com/database/enterprise:19.3.0.0
        imagePullPolicy: IfNotPresent
        env:
        - name: TZ
          value: Asia/Shanghai
        - name: ORACLE_SID
          value: ORCL
        - name: ORACLE_PWD
          value: "123456"
        - name: ENABLE_ARCHIVELOG
          value: "false"
        - name: ORACLE_CHARACTERSET
          value: AL32UTF8
        - name: ORACLE_BASE
          value: /opt/oracle
        - name: ORACLE_HOME
          value: /opt/oracle/product/19c/dbhome_1
        - name: PATH
          value: /opt/oracle/product/19c/dbhome_1/bin:/opt/oracle/product/19c/dbhome_1/OPatch/:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
        command: ["/bin/bash", "-c", "/opt/oracle/init.sh"]
        volumeMounts:
        - name: init-script
          mountPath: /opt/oracle/init.sh
          subPath: init.sh
        - name: oradata
          mountPath: /opt/oracle/oradata
        resources:
          limits:
            memory: "6Gi"
          requests:
            memory: "2Gi"
        ports:
        - containerPort: 1521
        - containerPort: 8080
      volumes:
      - name: init-script
        configMap:
          name: oracle-init-script
          defaultMode: 493
      - name: oradata
        persistentVolumeClaim:
          claimName: oracle-oradata-pvc

oracle-service.yaml

复制代码
apiVersion: v1
kind: Service
metadata:
  name: oracle-service
  namespace: test-oracle
spec:
  type: NodePort
  selector:
    app: oracle
  ports:
  - name: oracle-port  # 添加端口名称
    port: 1521         # 服务内部使用的端口
    targetPort: 1521   # 容器中监听的端口
    nodePort: 31521    # NodePort 类型使用的端口
  - name: http-port    # 添加另一个端口名称
    port: 8080         # 另一个服务端口
    targetPort: 8080
    nodePort: 31522     # 可选,NodePort 类型的另一个端口
相关推荐
fengkai454517 分钟前
3、Kubernetes的Namespace&Contexts&Pod&YAML格式
运维·容器·kubernetes·k8s·namespace·yaml·pod
SatanII1 小时前
K8s 存储与配置管理|Volume、ConfigMap、Secret 核心笔记
笔记·rpc·kubernetes
容器魔方2 小时前
Volcano v1.16 发布:新增 NamespaceQueue 与 fairshare,拓展 HyperNode 生态
人工智能·云原生·容器·华为云·云计算
秦jh_3 小时前
【Docker】镜像、卷原理
运维·docker·容器
小马同学-3 小时前
K8s 命名空间与上下文:Namespace 资源隔离与多集群切换实战
云原生·容器·kubernetes
阿里云云原生3 小时前
Agent 自进化的数据底座:阿里云 SLS Session Store
云原生
I'mChloe3 小时前
飞牛NAS部署flatnotes实战:Docker、8080端口、Markdown笔记与固定地址访问
笔记·docker·容器
川石课堂软件测试4 小时前
涨薪技术|0到1学会性能测试第9课-HTTP响应统计
数据库·功能测试·网络协议·http·kubernetes·单元测试·测试用例
探索云原生4 小时前
Ascend vNPU 实战:从原生 Docker 到 Ascend Docker Runtime
linux·ai·云原生·kubernetes·gpu
许知珩4 小时前
Kubernetes 存储与配置管理 ——Volume、ConfigMap 与 Secret 实战详解
云原生·容器·kubernetes