Saat Anda meningkatkan kluster, sistem secara otomatis memeriksa kompatibilitas antara Versi Platform ECI dan versi Kubernetes. Jika pod ECI menggunakan Versi Platform ECI yang tidak kompatibel dengan versi Kubernetes target, Anda harus menghapus dan membuat ulang pod tersebut secara manual sebelum dapat meningkatkan versi Kubernetes kluster. Pastikan Versi Platform ECI kompatibel dengan versi Kubernetes sebelum melakukan peningkatan kluster.
Pengenalan Versi Platform ECI
Versi Platform ECI adalah nomor versi untuk lingkungan runtime tertentu dari infrastruktur Elastic Container Instance (ECI) yang membantu membedakan berbagai lingkungan runtime ECI. Seiring evolusi lingkungan runtime ECI, Versi Platform ECI baru dirilis untuk menambahkan fitur, memperbaiki bug, atau menerapkan patch.
Secara default, pod ECI yang Anda buat di atau kluster ACK mencakup anotasi dengan kunci k8s.aliyun.com/eci-platform-version. Nilai anotasi ini merupakan nomor Versi Platform ECI. Berikut contohnya:
apiVersion: v1
kind: Pod
metadata:
annotations:
k8s.aliyun.com/eci-platform-version: 1.0.0
name: demo-76d8d9f9d8-l7pwm
namespace: default
...Versi Kubernetes yang kompatibel dengan Versi Platform ECI
Versi Kubernetes yang kompatibel dengan setiap Versi Platform ECI tercantum dalam tabel berikut.
Versi Platform ECI untuk pod ECI yang baru dibuat adalah 1.1.0. Untuk pod ECI yang sudah ada, versi platformnya adalah 1.0.0 atau kosong.
Versi Platform ECI | Versi Kubernetes yang kompatibel |
1.1.0 | 1.12 dan yang lebih baru |
1.0.0 | 1.12, 1.14, 1.16, 1.18, 1.20, 1.22, dan 1.24 |
Kosong (Anotasi | 1.12, 1.14, 1.16, 1.18, 1.20, 1.22, dan 1.24 |
Tingkatkan Versi Platform ECI
Sambungkan ke kluster. Untuk informasi selengkapnya, lihat Dapatkan KubeConfig kluster dan sambungkan ke kluster menggunakan kubectl.
Ambil informasi tentang pod ECI yang versi platformnya 1.0.0 atau kosong.
Informasi tersebut mencakup namespace pod, nama, Versi Platform ECI, dan ID instans ECI, yang dikembalikan dalam format yang dipisahkan koma.
kubectl get pods -A -o json | jq -r '.items[] | select(.metadata.annotations["k8s.aliyun.com/eci-platform-version"] == "1.0.0" or .metadata.annotations["k8s.aliyun.com/eci-platform-version"] == null or .metadata.annotations["k8s.aliyun.com/eci-platform-version"] == "") | select(.spec.nodeName | startswith("virtual-kubelet")) | "\(.metadata.namespace),\(.metadata.name),\(.metadata.annotations["k8s.aliyun.com/eci-platform-version"] // ""),\(.metadata.annotations["k8s.aliyun.com/eci-instance-id"])"'Contoh keluaran:
default,portal-server-57dfc4fdc8-2gl64,,eci-2zecdr8z5jy******Hapus dan buat ulang pod ECI target.
Contoh perintah:
kubectl delete pod portal-server-57dfc4fdc8-2gl64 -n defaultContoh keluaran:
pod "portal-server-57dfc4fdc8-2gl64" deletedSetelah pod ECI dihapus dan dibuat ulang, Versi Platform ECI-nya secara otomatis ditingkatkan ke versi terbaru. Anda dapat menjalankan perintah berikut untuk memverifikasi Versi Platform ECI.
kubectl get pods -A -o json | jq -r '.items[] | select(.spec.nodeName | startswith("virtual-kubelet")) | "\(.metadata.namespace),\(.metadata.name),\(.metadata.annotations["k8s.aliyun.com/eci-platform-version"] // ""),\(.metadata.annotations["k8s.aliyun.com/eci-instance-id"] // "")"'