Rumah >pembangunan bahagian belakang >Tutorial Python >Cara menguruskan kontena aplikasi Python menggunakan Kubernetes
Cara menggunakan Kubernetes untuk mengurus kontena aplikasi Python
Kubernetes ialah platform sumber terbuka untuk mengurus penggunaan kontena, penskalaan automatik dan pemulihan aplikasi yang tahan terhadap kesalahan. Ia menyediakan mekanisme penempatan dan pengembangan yang fleksibel, serta boleh mengautomasikan pengurusan dan pemantauan kontena. Artikel ini akan memperkenalkan cara menggunakan Kubernetes untuk mengurus kontena aplikasi Python dan menyediakan beberapa contoh kod mudah.
Pertama, kita perlu menyediakan aplikasi Python dan kontenakannya. Katakan kita mempunyai aplikasi web mudah yang boleh dilaksanakan melalui rangka kerja Flask. Berikut ialah contoh mudah:
# app.py from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
Kita perlu mencipta Dockerfile untuk membina bekas untuk aplikasi ini. Berikut ialah contoh Dockerfile yang mudah:
# Dockerfile FROM python:3.9 WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 5000 CMD ["python", "app.py"]
Dalam Dockerfile ini, kami mula-mula memilih imej asas untuk aplikasi Python (python:3.9), kemudian salin kod aplikasi ke dalam direktori kerja bekas dan pasang semua kebergantungan yang diperlukan. Akhirnya, kami mendedahkan aplikasi pada port 5000 dan menentukan arahan untuk dijalankan apabila bekas bermula.
Selepas menyediakan Dockerfile, kita boleh membina imej Docker menggunakan arahan berikut:
docker build -t my-python-app .
Ini akan membina imej Docker bernama my-python-app dalam direktori semasa.
Sebelum meneruskan, kita perlu mengkonfigurasi kluster Kubernetes. Memandangkan pemasangan dan konfigurasi Kubernetes berada di luar skop artikel ini, kami menganggap anda sudah mempunyai kluster yang berfungsi.
Seterusnya, kita perlu mencipta Kubernetes Deployment untuk mengurus bekas aplikasi kami. Sila buat fail yang dipanggil my-python-app-deployment.yaml dan tambahkan kandungan berikut pada fail:
# my-python-app-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-python-app-deployment spec: replicas: 3 selector: matchLabels: app: my-python-app template: metadata: labels: app: my-python-app spec: containers: - name: my-python-app image: my-python-app ports: - containerPort: 5000
Dalam Penggunaan ini, kami telah menentukan 3 replika untuk menentukan bilangan replika bekas yang ingin kami jalankan. Kami juga mentakrifkan pemilih untuk memadankan Deployment kami dan menentukan nama dan port imej kontena.
Seterusnya, kami boleh menggunakan apl kami menggunakan arahan berikut:
kubectl apply -f my-python-app-deployment.yaml
Ini akan mencipta Deployment bernama my-python-app-deployment dan memulakan 3 salinan bekas dalam kelompok .
Akhir sekali, kami perlu mendedahkan perkhidmatan aplikasi supaya ia boleh diakses dari luar. Sila buat fail bernama my-python-app-service.yaml dan tambah kandungan berikut pada fail:
# my-python-app-service.yaml apiVersion: v1 kind: Service metadata: name: my-python-app-service spec: selector: app: my-python-app ports: - protocol: TCP port: 80 targetPort: 5000 type: LoadBalancer
Dalam Perkhidmatan ini, kami menentukan pemetaan port kontena dan mengeksportnya sebagai port 80. Kami juga menentukan jenis Perkhidmatan sebagai LoadBalancer untuk mencipta pengimbang beban luaran secara automatik dalam persekitaran yang menyokong pengimbangan beban. . Kubernetes akan membuat pengimbang beban luaran secara automatik dan mengarahkan trafik ke bekas aplikasi kami.
Saya harap artikel ini akan membantu anda memahami dan menggunakan Kubernetes untuk menguruskan kontena aplikasi Python. Anda boleh menyesuaikan kod sampel untuk memenuhi keperluan anda dan melanjutkan dan mengoptimumkan aplikasi dan persekitarannya.
Atas ialah kandungan terperinci Cara menguruskan kontena aplikasi Python menggunakan Kubernetes. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!