ប្រវត្តិសាស្ត្រថ្មី។

ការអប់រំ: សិល្បៈដែលអ្នកគួរតែគ្រប់គ្រង

ដោយ Nicolas Fränkel6m2025/04/25
Read on Terminal Reader

យូរ​ពេក; អាន

មុនពេលដែលខ្ញុំបានធ្វើការនៅលើសេវាកម្មដែលមានប្រសិទ្ធិភាពក្នុងការធ្វើតេស្តគោលបំណងរបស់អ្នកនៅលើ Kubernetes ជាមួយ GKE និង GitHub Actions ខ្ញុំបានធ្វើតេស្តដូចគ្នាពីរដង: សេវាកម្ម A មានតម្រូវការសេវាកម្ម B ប៉ុន្តែសេវាកម្ម A បានចាប់ផ្តើមយ៉ាងឆាប់រហ័សជាងសេវាកម្ម B ហើយប្រព័ន្ធនេះមិនអាចធ្វើបាន។ នៅក្នុងប្រកាសនេះខ្ញុំចង់សរសេរបញ្ជីនៃបញ្ហាទាំងនេះនិងរបៀបដែលខ្ញុំបានដោះស្រាយទាំងពីរជាមួយឧបករណ៍ដូចគ្នា។
featured image - ការអប់រំ: សិល្បៈដែលអ្នកគួរតែគ្រប់គ្រង
Nicolas Fränkel HackerNoon profile picture

នៅពេលដែលបានធ្វើការនៅលើសាកលវិទ្យាល័យដែលមានឈ្មោះការធ្វើតេស្តការទាញយករបស់អ្នកនៅលើ Kubernetes ជាមួយ GKE និង GitHub Actions, ខ្ញុំបានប្រៀបធៀបបញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្ហាសម្រាប់បញ្

សូមអរគុណនៅ Kubernetes

វាគឺជាការគួរឱ្យចាប់អារម្មណ៍ណាស់ក្នុងការចាប់អារម្មណ៍នៅក្នុង Kubernetes ។ គុណភាពការព្យាបាលដោយខ្លួនឯងនៃប្លាស្ទិច Kubernetes គឺជាផ្នែកមួយនៃអត្ថប្រយោជន៍ដ៏ធំបំផុតរបស់វា។ សូមអរគុណសម្បត្តិទាំងពីរ: កម្មវិធី Python និងទិន្នន័យ PostgreSQL ។


កម្មវិធីនេះចាប់ផ្តើមយ៉ាងឆាប់រហ័សហើយធ្វើការដើម្បីបង្កើតការតភ្ជាប់ទៅនឹងទិន្នន័យ។ ក្នុងអំឡុងពេលនេះទិន្នន័យនេះកំពុងចាប់ផ្តើមដោយខ្លួនឯងជាមួយនឹងទិន្នន័យដែលបានផ្តល់ជូន។ ការតភ្ជាប់នេះមិនមានប្រសិទ្ធិភាព។ ទិន្នន័យនៃការតភ្ជាប់នេះបានបញ្ចប់នៅក្នុងទិន្នន័យ។Failedប្រទេស


បន្ទាប់ពីពេលវេលា Kubernetes អនុញ្ញាតឱ្យដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការដំណើរការ។

ដើម្បីកើនឡើងនូវដំណើរការនេះ, Kubernetes ផ្តល់ជូននូវការធ្វើតេស្ត startupនេះ :


startupProbe:
  httpGet:
    path: /health
    port: 8080
  failureThreshold: 30
  periodSeconds: 10


ជាមួយនឹងការសាកល្បងខាងលើ, Kubernetes នឹងរយៈពេល 10 វិនាទីដំបូងមុនពេលដែលអ្នកត្រូវការសាកល្បងនៃការសាកល្បង។ ប្រសិនបើវាមានការបញ្ចប់វាមានការបញ្ចប់វាមានការបញ្ចប់វាមានការបញ្ចប់វាមានការបញ្ចប់វាមានការបញ្ចប់វាមានការបញ្ចប់វាមានការបញ្ចប់វាមានការបញ្ចប់ 30 វិនាទី។


អ្នកអាចរកឃើញ HTTP/healthការផ្តល់សេវាកម្មរបស់ Kubernetes មានការផ្តល់សេវាកម្មទាំងពីរការធ្វើដំណើរការកំណត់ Configuration:httpGetexecនេះជាលើកដំបូងគឺស្រស់ស្អាតសម្រាប់កម្មវិធីបណ្ដាញ, ខណៈពេលដែលចុងក្រោយនេះគឺសម្រាប់កម្មវិធីផ្សេងទៀត។ វាត្រូវបាននិយាយថាយើងត្រូវដឹងថាតើប្រភេទនៃកញ្ចក់ដែល Pod មាននិងធ្វើដូចម្តេចដើម្បីត្រួតពិនិត្យស្ថានភាពរបស់វាដោយសារតែវាអាច។ ខ្ញុំមិនជាអ្នកជំនាញ PostgreSQL ដូច្នេះខ្ញុំបានស្វែងរកការត្រួតពិនិត្យស្ថានភាព។Bitnami Helm ស្លាកដូចខាងក្រោមនៅពេលដែលបានអនុវត្ត:


startupProbe:
  exec:
    command:
      - /bin/sh
      - -c
      - -e
      - exec pg_isready -U $PG_USER -h $PG_HOST -p $PG_PORT

សូមពិនិត្យឡើងវិញថានៅលើនេះគឺជាការងាយស្រួល, ដូច្នេះវាគឺជាការឆ្លងកាត់ឈ្មោះទិន្នន័យនិងវិញ្ញាបនប័ត្រ SSL ។


ទិន្នន័យដែលអ្នកបានកំណត់វាត្រូវបានកាត់បន្ថយប្រសិនបើអ្នកបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់វាត្រូវបានកំណត់។


វាមានអត្ថប្រយោជន៍ក្នុងការស្វែងរកការផ្លាស់ប្តូរ។

លក្ខខណ្ឌ4x

ការផ្លាស់ប្តូរគឺជាឧបករណ៍ដែលមានគោលបំណងក្នុងការរក្សាទុក។ មុនពេលវេលាខ្ញុំបានរកឃើញបងបងគំនិតនេះគឺជាគំនិតច្បាស់។ គំនិតនេះគឺជាគំនិតច្បាស់។


សត្វ

./wait-for គឺជាប្រព័ន្ធប្រតិបត្តិការដែលត្រូវបានរចនាឡើងដើម្បីត្រឡប់មកវិញសេវាកម្មដូចជា containers docker ។ វាគឺជាប្រព័ន្ធប្រតិបត្តិការ sh និង alpine ។

សត្វ

./wait-for គឺជាប្រព័ន្ធប្រតិបត្តិការដែលត្រូវបានរចនាឡើងដើម្បីត្រឡប់មកវិញសេវាកម្មដូចជា containers docker ។ វាគឺជាប្រព័ន្ធប្រតិបត្តិការ sh និង alpine ។


Here is how to wait for a HTTP API: តើធ្វើដូចម្តេចដើម្បីរក្សាទុក HTTP API:


sh -c './wait-for http://my.api/health -- echo "The api is up! Let's use it"'


វាត្រូវបានធ្វើការ, ប៉ុន្តែនៅពេលនេះ, អ្នកត្រូវការកំណត់សៀវភៅនិងត្រួតពិនិត្យដោយផ្ទាល់សម្រាប់ការធ្វើឱ្យប្រសើរឡើង. ខ្ញុំបានត្រួតពិនិត្យ, និងគម្រោងនេះឥឡូវនេះផ្តល់នូវកញ្ចក់ធម្មតា.


មតិ 4xប្រព័ន្ធ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ


ប្រសិនបើអ្នកប្រើឧបករណ៍ណាមួយអ្នកអាចប្រើវាក្នុងកុំព្យូទ័រនេះ :


សត្វ

កុំព្យូទ័រ Pod អាចមានកុំព្យូទ័រជាច្រើនដំណើរការកម្មវិធីនៅក្នុងវាប៉ុន្តែវាអាចមានកុំព្យូទ័រ init មួយឬច្រើនដំណើរការមុនពេលដែលកុំព្យូទ័រកម្មវិធីត្រូវបានចាប់ផ្តើម។

សត្វ

កញ្ចក់ Init គឺជាកញ្ចក់ធម្មតាប៉ុណ្ណោះ:

សត្វ


    រោងចក្រផលិតផលទាំងអស់គួរឱ្យចាប់ផ្តើមមុនពេលបច្ចុប្បន្ននេះ។ រោងចក្រផលិតផលទាំងអស់គួរឱ្យចាប់ផ្តើមមុនពេលបច្ចុប្បន្ននេះ។
សត្វ

កុំព្យូទ័រ Pod អាចមានកុំព្យូទ័រជាច្រើនដំណើរការកម្មវិធីនៅក្នុងវាប៉ុន្តែវាអាចមានកុំព្យូទ័រ init មួយឬច្រើនដំណើរការមុនពេលដែលកុំព្យូទ័រកម្មវិធីត្រូវបានចាប់ផ្តើម។

កញ្ចក់ Init គឺជាកញ្ចក់ធម្មតាប៉ុណ្ណោះ:


    រោងចក្រផលិតផលទាំងអស់គួរឱ្យចាប់ផ្តើមមុនពេលបច្ចុប្បន្ននេះ។ រោងចក្រផលិតផលទាំងអស់គួរឱ្យចាប់ផ្តើមមុនពេលបច្ចុប្បន្ននេះ។


សូមអរគុណភាពដូចខាងក្រោមPodនេះបើយោងតាម PostgreSQLDeploymentនេះ :


apiVersion: v1
kind: Pod
metadata:
  labels:
    type: app
    app: recommandations
spec:
  containers:
    - name: recommandations
      image: recommandations:latest
      envFrom:
        - configMapRef:
            name: postgres-config


កម្មវិធីនេះគឺជា Python និងចាប់ផ្តើមយ៉ាងឆាប់រហ័ស។ វាត្រូវបានធ្វើតេស្តដើម្បីភ្ជាប់ទៅនឹងទិន្នន័យ PostgreSQL ។ ទិន្នន័យនៃទិន្នន័យមិនបានបញ្ចប់ការចាប់ផ្តើមដូច្នេះទិន្នន័យនៃការភ្ជាប់មិនអាចធ្វើបានហើយ Kubernetes បានចាប់ផ្តើមដំណោះស្រាយ។


យើងអាចជួសជុលវាជាមួយនឹងinitContainerការរក្សាទុករក្សាទុករក្សាទុករក្សាទុក:


apiVersion: v1
kind: Pod
metadata:
  labels:
    type: app
    app: recommandations
spec:
  initContainers:
    - name: wait-for-postgres
      image: atkrad/wait4x:3.1
      command:
        - wait4x
        - postgresql
        - postgres://$(DATABASE_URL)?sslmode=disable
      envFrom:
        - configMapRef:
            name: postgres-config
  containers:
    - name: recommandations
      image: recommandations:latest
      envFrom:
        - configMapRef:
            name: postgres-config


នៅក្នុងការកំណត់ដែលបានបង្ហាញនៅលើនេះ, theinitContainerវាត្រូវបានកាត់បន្ថយពេលដែលទិន្នន័យទិន្នន័យទទួលបានការតភ្ជាប់។ នៅពេលដែលវាត្រូវបានកាត់បន្ថយវាត្រូវបានកាត់បន្ថយrecommandationsអ្នកអាចចាប់ផ្តើមដំណើរការ។ Kubernetes មិនត្រូវបញ្ចប់ដំណើរការPodដូចជាការដំឡើងមុន! វាត្រូវបានអនុវត្តដោយប្រហែលជាប្រហែលប្រហែលប្រហែលប្រហែលប្រហែលប្រហែលប្រហែលប្រហែលប្រហែលប្រហែលប្រហែលប្រហែលប្រហែល។

នៅពេលដែលការចាប់អារម្មណ៍បានក្លាយជាតម្រូវការ

នេះគឺជាការល្អប្រសើរជាងមុនប៉ុន្តែអ្នកអាចធ្វើបានដោយគ្មានវា។ ក្នុងករណីផ្សេងទៀតវានឹងក្លាយជាការចាំបាច់។ ខ្ញុំមានបទពិសោធរបស់វានៅពេលដែលបានរៀបចំសម្រាប់សាកលវិទ្យាល័យដែលបាននិយាយនៅលើនេះ។ វិស័យនេះគឺដូចខាងក្រោម:


    សត្វ
  • ការធ្វើដំណើរឧបករណ៍នេះបានអនុវត្តការប្រកាសនៅលើផ្នែក Kubernetes ។
  • សត្វ
  • ក្នុងដំណោះស្រាយបន្ទាប់នេះវានឹងធ្វើការសាកល្បង
  • សត្វ
  • ប្រសិនបើការធ្វើតេស្តបានចាប់ផ្តើមមុនពេលដែលកម្មវិធីនេះត្រូវបានសរសេរវាមិនជោគជ័យ។
  • សត្វ


យើងគួរតែចាប់អារម្មណ៍ថានៅពេលបច្ចុប្បន្ននេះដើម្បីធ្វើការសាកល្បងមុនពេលបច្ចុប្បន្ននេះ។ យើងគួរតែប្រើwait4xសូមអរគុណដល់ការPodដើម្បីទទួលបានតម្រូវការមុនពេលដែលយើងចាប់ផ្តើមការធ្វើតេស្ត:


      - name: Wait until the application has started
        uses: addnab/docker-run-action@v3                                       #1
        with:
          image: atkrad/wait4x:latest
          run: wait4x http ${{ env.BASE_URL }}/health --expect-status-code 200  #2
    សត្វ
  1. ការអនុវត្ត GitHub អនុញ្ញាតឱ្យដំណើរការកញ្ចក់។ ខ្ញុំអាចទាញយកដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយ។
  2. សត្វ
  3. សូមអរគុណប្រសិនបើបញ្ចប់ /health បានបង្ហាញលេខកូដ 200 នៃការឆ្លើយតប។
  4. សត្វ

លទ្ធផល

ការចាប់ផ្តើម Kubernetes គឺជាវិធីល្អឥតគិតថ្លៃដើម្បីជៀសវាងការចាប់ផ្តើមថ្មីដែលមិនចាំបាច់នៅពេលដែលអ្នកចាប់ផ្តើមសេវាកម្មដែលទាក់ទងគ្នា។ ការផ្លាស់ប្តូរនេះគឺជាឧបករណ៍ការចាប់ផ្តើមខាងក្រៅដែលត្រូវបានកំណត់នៅក្នុងinitContainerនេះ។wait4xវាគឺជាឧបករណ៍ដែលអាចប្រើបាននៅក្នុងបញ្ហាផ្សេងទៀត។ វាគឺជាផ្នែកមួយនៃឧបករណ៍របស់ខ្ញុំឥឡូវនេះ។


To go further:


    សត្វ
  • មតិ 4x
  • សត្វ
  • ដូច្នេះអ្នកត្រូវការរយៈពេលមួយចំនួននៃការរក្សាទុក Kubernetes?
  • សត្វ



បានបោះពុម្ពនៅ A Java Geek នៅ ខែមេសា 20, 2025

ប្រព័ន្ធប្រតិបត្តិការ Java Geek
L O A D I N G
. . . comments & more!

About Author

Nicolas Fränkel HackerNoon profile picture
Nicolas Fränkel@nfrankel
Dev Advocate | Developer & architect | Love learning and passing on what I learned!

ព្យួរស្លាក

អត្ថបទនេះត្រូវបានបង្ហាញនៅក្នុង...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks