Kubernetes服务--简述运行单实例的有状态服务示例
目标
在你的环境中创建一个PV
创建一个MySQl的Deployment
在集群中以DNS名称的方式,将MySQL暴露给其他的pod
开始之前
你需要一个Kubernetes集群,一个可以连接到集群的kubectl命令行工具。如果你没有集群,你可以使用Minikube来创建。
我们会创建一个PV(PersistentVolume)用于数据存储。点击这里来查看PV支持的类型,该指导会使用GCEPersistentDisk来演示,但其实任何的PV类型都可以正常工作。GCEPersistentDisk只能在Google Compute Engine(GCE)上工作。
在你的环境中创建磁盘
在Google Compute Engine,运行:
gcloud compute disks create --size=20GB mysql-disk
然后创建一个PV,指向刚刚创建的mysql-disk。下面是一个创建PV的配置文件,指向上面提到的GCE磁盘:
apiVersion: v1 kind: PersistentVolume metadata: name: mysql-pv spec: capacity: storage: 20Gi accessModes:- ReadWriteOnce gcePersistentDisk: pdName: mysql-disk fsType: ext4
注意pdName: mysql-disk这一行匹配上面GCE环境创建磁盘的名称。如果要在其他环境中创建PV,可以查看Persistent Volumes来获取详细信息。
创建PV:
kubectl create -f https://k8s.io/docs/tasks/run-application/gce-volume.yaml
部署MySQL
你可以通过Kubernetes Deployment的方式来创建一个有状态服务,然后使用PVC(PersistentVolumeClaim)来连接已经存在的PV。比如,下面的YAML文件描述了一个运行MySQL并使用PVC的Deployment。文件定义了一个mount到/var/lib/mysql的卷,并创建了一个需要20G卷大小的PVC。
注意:密码定义在YAML配置文件中,这是不安全的。查看Kubernetes Secrets获取更安全的方案。
apiVersion: v1 kind: Service metadata: name: mysql spec: ports:- port: 3306 selector: app: mysql clusterIP: None---apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim spec: accessModes:- ReadWriteOnce resources: requests: storage: 20Gi---apiVersion: apps/v1beta1 kind: Deployment metadata: name: mysql spec: strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql:5.6name: mysql env: # Use secret in real usage- name: MYSQL_ROOT_PASSWORD value: password ports:- containerPort: 3306 name: mysql volumeMounts:- name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim
1. 部署YAML文件中的内容。
kubectl create -f https://k8s.io/docs/tasks/run-application/mysql-deployment.yaml
2. 显示Deployment的信息。
kubectl describe deployment mysql Name: mysql Namespace: default CreationTimestamp: Tue, 01 Nov 2016 11:18:45 -0700 Labels: app=mysql Selector: app=mysql Replicas: 1 updated | 1 total | 0 available | 1 unavailable StrategyType: Recreate MinReadySeconds: 0 OldReplicaSets: <none> NewReplicaSet: mysql-63082529 (1/1 replicas created) Events: FirstSeen LastSeen Count From SubobjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 33s 33s 1 {deployment-controller } Normal ScalingReplicaSet Scaled up replica set mysql-63082529 to 1
3. 显示Deployment创建的pod。
kubectl get pods -l app=mysql NAME READY STATUS RESTARTS AGE mysql-63082529-2z3ki 1/1 Running 0 3m
4. 检查PV。
kubectl describe pv mysql-pv Name: mysql-pv Labels: <none> Status: Bound Claim: default/mysql-pv-claim Reclaim Policy: Retain Access Modes: RWO Capacity: 20Gi Message: Source: Type: GCEPersistentDisk (a Persistent Disk resource in Google Compute Engine) PDName: mysql-disk FSType: ext4 Partition: 0 ReadOnly: false No events.
5. 检查PVC。
kubectl describe pvc mysql-pv-claim Name: mysql-pv-claim Namespace: default Status: Bound Volume: mysql-pv Labels: <none> Capacity: 20Gi Access Modes: RWO No events.
访问MySQL实例
前面的YAML文件创建了一个服务,允许集群的其他Pod可以访问数据库。服务选项clusterIP:None使得服务的DNS名直接解析为Pod的IP地址。当你的服务只有一个Pod,并且你不打算增加Pod的数量时,这是一种最佳的使用方式。
运行一个Mysql客户端来连接Mysql服务:
kubectl run -it --rm --image=mysql:5.6 mysql-client -- mysql -h <pod-ip> -ppassword
上面的命令在集群中创建了一个新的Pod,该Pod运行了一个mysql客户端,连接着上面服务的Mysql Server。如果它连接成功,也就说明了这个有状态的MySQL数据库成功启动和运行了。
Waiting for pod default/mysql-client-274442439-zyp6i to be running, status is Pending, pod ready: falseIf you don't see a command prompt, try pressing enter.mysql>
更新
更新Deployment的镜像或者其他部分,同样可以照例使用kubectl apply命令来完成。以下是使用有状态应用时需要注意的地方:
不要扩容该应用。该应用只针对单例应用。下面的PV只能映射给一个Pod。对于集群的有状态应用,请查看StatefulSet文档。
在Deployment的YAML配置文档中使用strategy: type: Recreate。它会告诉Kubernetes不要使用rolling update。因为Rolling update不会工作,因此不会有多个Pod同时运行。策略Recreate会在使用更新配置创建一个新的Pod时删除之前的Pod。
删除Deployment
通过名称来删除Deployment对象:
kubectl delete deployment,svc mysql kubectl delete pvc mysql-pv-claim kubectl delete pv mysql-pv
另外,如果你使用的是GCE disk,还需要删除对应的disk:
gcloud compute disks delete mysql-disk
文章转自:
Atas ialah kandungan terperinci Kubernetes服务--简述运行单实例的有状态服务示例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

"Status sambungan dalam mesej log peristiwa menunjukkan Tunggu Sedia: Diputuskan sambungan kerana pematuhan NIC. Ini bermakna sistem berada dalam mod siap sedia dan kad antara muka rangkaian (NIC) telah diputuskan sambungan. Walaupun ini biasanya isu rangkaian, tetapi ia boleh juga disebabkan oleh konflik perisian dan perkakasan Dalam perbincangan berikut, kita akan meneroka cara menyelesaikan masalah ini "Apakah punca sambungan siap sedia?" pematuhan NIC? Jika anda melihat mesej "ConnectivityStatusinStandby:DisConnected,Reason:NICCompliance" dalam Windows Event Viewer, ini menunjukkan bahawa mungkin terdapat masalah dengan NIC atau pengawal antara muka rangkaian anda. Keadaan ini biasanya

Mesin Vektor Sokongan (SVM) dalam Python ialah algoritma pembelajaran diselia yang berkuasa yang boleh digunakan untuk menyelesaikan masalah klasifikasi dan regresi. SVM berprestasi baik apabila menangani data berdimensi tinggi dan masalah bukan linear, dan digunakan secara meluas dalam perlombongan data, klasifikasi imej, klasifikasi teks, bioinformatik dan bidang lain. Dalam artikel ini, kami akan memperkenalkan contoh penggunaan SVM untuk pengelasan dalam Python. Kami akan menggunakan model SVM daripada perpustakaan scikit-learn

Momo, platform sosial yang terkenal, menyediakan pengguna dengan pelbagai perkhidmatan berfungsi untuk interaksi sosial harian mereka. Pada Momo, pengguna boleh berkongsi status hidup mereka dengan mudah, berkawan, berbual, dsb. Antaranya, fungsi status tetapan membolehkan pengguna menunjukkan mood dan status semasa mereka kepada orang lain, sekali gus menarik perhatian dan komunikasi lebih ramai orang. Jadi bagaimana untuk menetapkan status Momo anda sendiri Perkara berikut akan memberi anda pengenalan terperinci! Bagaimana untuk menetapkan status pada Momo? 1. Buka Momo, klik Lagi di penjuru kanan sebelah bawah, cari dan klik Status Harian. 2. Pilih status. 3. Status tetapan akan dipaparkan.

Kaedah untuk melihat status pelayan termasuk alat baris arahan, alat antara muka grafik, alat pemantauan, fail log dan alat pengurusan jauh. Pengenalan terperinci: 1. Gunakan alat baris arahan Pada pelayan Linux atau Unix, anda boleh menggunakan alat baris arahan untuk melihat status pelayan 2. Gunakan alat antara muka grafik untuk sistem pengendalian pelayan dengan antara muka grafik disediakan oleh sistem Gunakan alat antara muka untuk melihat status pelayan 3. Gunakan alat pemantauan Anda boleh menggunakan alat pemantauan khas untuk memantau status pelayan, dsb.

Ingin kelihatan "luar talian" atau tidak mahu berkongsi status semasa anda dengan rakan anda di WhatsApp? Terdapat helah yang mudah tetapi bijak untuk melakukan ini. Anda boleh melaraskan tetapan WhatsApp anda supaya status semasa anda (luar talian atau kali terakhir dilihat) tidak kelihatan kepada rakan anda atau orang lain di sana. Bagaimana untuk menunjukkan status luar talian pada bar status WhatsApp anda? Ini adalah proses yang sangat mudah dan diperkemas. Jadi, ikuti langkah di bawah sekarang. Langkah 1 – Buka WhatsApp pada telefon anda. Langkah 2 – Ketik ⋮ dan pilih untuk membuka Tetapan. Langkah 3 – Buka tetapan Privasi untuk mengaksesnya. Langkah 4 – Pada halaman privasi itu, buka tetapan "Dilihat & Dalam Talian Terakhir" untuk mengaksesnya. Langkah 5 – Tukar “Siapa yang boleh

Memandangkan skala Internet terus berkembang dan keperluan pengguna terus meningkat, kelebihan seni bina perkhidmatan mikro semakin mendapat perhatian. Selepas itu, seni bina perkhidmatan mikro kontena telah menjadi sangat penting, yang dapat memenuhi keperluan ketersediaan tinggi, prestasi tinggi, berskala tinggi dan aspek lain dengan lebih baik. Di bawah aliran ini, go-zero dan Kubernetes telah menjadi rangka kerja mikro perkhidmatan bekas paling popular. Artikel ini akan memperkenalkan cara menggunakan rangka kerja go-zero dan alatan orkestrasi kontena Kubernetes untuk membina ketersediaan tinggi, berprestasi tinggi

Pemahaman mendalam tentang lima keadaan benang Java dan peraturan penukarannya 1. Pengenalan kepada lima keadaan benang Di Jawa, kitaran hayat benang boleh dibahagikan kepada lima keadaan berbeza, termasuk keadaan baharu (BARU), keadaan sedia (RUNNABLE), Status berjalan (RUNNING), status menyekat (BLOCKED) dan status penamatan (TERMINATED). Keadaan baharu (BARU): Apabila objek benang dibuat, ia berada dalam keadaan baharu. Pada ketika ini, objek benang telah memperuntukkan sumber yang mencukupi untuk melaksanakan tugas

Dengan perkembangan pesat Internet, semakin banyak perusahaan telah mula memindahkan aplikasi mereka ke platform awan. Docker dan Kubernetes telah menjadi dua alat yang sangat popular dan berkuasa untuk penggunaan dan pengurusan aplikasi pada platform awan. Beego ialah rangka kerja Web yang dibangunkan menggunakan Golang Ia menyediakan fungsi yang kaya seperti penghalaan HTTP, lapisan MVC, pengelogan, pengurusan konfigurasi dan pengurusan Sesi. Dalam artikel ini kami akan membincangkan cara menggunakan Docker dan Kub
