នៅពេលដែលបានធ្វើការនៅលើសាកលវិទ្យាល័យដែលមានឈ្មោះការធ្វើតេស្តការទាញយករបស់អ្នកនៅលើ 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:httpGet
ឬexec
នេះជាលើកដំបូងគឺស្រស់ស្អាតសម្រាប់កម្មវិធីបណ្ដាញ, ខណៈពេលដែលចុងក្រោយនេះគឺសម្រាប់កម្មវិធីផ្សេងទៀត។ វាត្រូវបាននិយាយថាយើងត្រូវដឹងថាតើប្រភេទនៃកញ្ចក់ដែល 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
- សត្វ
- ការអនុវត្ត GitHub អនុញ្ញាតឱ្យដំណើរការកញ្ចក់។ ខ្ញុំអាចទាញយកដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយដំណោះស្រាយ។ សត្វ
- សូមអរគុណប្រសិនបើបញ្ចប់ /health បានបង្ហាញលេខកូដ 200 នៃការឆ្លើយតប។ សត្វ
លទ្ធផល
ការចាប់ផ្តើម Kubernetes គឺជាវិធីល្អឥតគិតថ្លៃដើម្បីជៀសវាងការចាប់ផ្តើមថ្មីដែលមិនចាំបាច់នៅពេលដែលអ្នកចាប់ផ្តើមសេវាកម្មដែលទាក់ទងគ្នា។ ការផ្លាស់ប្តូរនេះគឺជាឧបករណ៍ការចាប់ផ្តើមខាងក្រៅដែលត្រូវបានកំណត់នៅក្នុងinitContainer
នេះ។wait4x
វាគឺជាឧបករណ៍ដែលអាចប្រើបាននៅក្នុងបញ្ហាផ្សេងទៀត។ វាគឺជាផ្នែកមួយនៃឧបករណ៍របស់ខ្ញុំឥឡូវនេះ។
To go further:
- សត្វ
- មតិ 4x សត្វ
- ដូច្នេះអ្នកត្រូវការរយៈពេលមួយចំនួននៃការរក្សាទុក Kubernetes? សត្វ
បានបោះពុម្ពនៅ A Java Geek នៅ ខែមេសា 20, 2025
ប្រព័ន្ធប្រតិបត្តិការ Java Geek