Kamu sedang menampilkan dokumentasi untuk Kubernetes versi: v1.20
Kubernetes v1.20 dokumentasi sudah tidak dirawat lagi. Versi yang kamu lihat ini hanyalah snapshot statis. Untuk dokumentasi terkini, lihat versi terbaru.
Instalasi Kubernetes dengan Minikube
Minikube adalah alat yang memudahkan untuk menjalankan Kubernetes pada komputer lokal. Minikube menjalankan satu Node klaster Kubernetes di dalam Virtual Machine (VM) pada laptop kamu untuk pengguna yang ingin mencoba Kubernetes atau mengembangkannya.
Fitur Minikube
Minikube mendukung fitur Kubernetes berikut:
- DNS
- NodePort
- ConfigMap dan {< glossary_tooltip text="Secret" term_id="secret" >}}
- Dashboard
- Container runtime: Docker, CRI-O, dan containerd
- CNI
- Ingress
Instalasi
Lihat Instalasi Minikube.
Memulai Cepat
Demonstrasi singkat ini memandu kamu tentang bagaimana memulai, menggunakan dan menghapus Minikube secara lokal. Ikuti langkah berikut untuk memulai dan menjelajahi Minikube.
Mulailah Minikube dan buatlah sebuah klaster:
minikube start
Keluaran menyerupai:
Starting local Kubernetes cluster... Running pre-create checks... Creating machine... Starting local Kubernetes cluster...
Untuk informasi lebih lanjut mengenai bagaimana memulai klaster pada versi Kubernetes tertentu, VM atau Container runtime, lihatlah Memulai klaster.
Kini kamu bisa berinteraksi dengan klaster kamu dengan kubectl. Untuk informasi lebih lanjut, lihatlah Interaksi dengan klaster kamu.
Mari kita buat Kubernetes Deployment menggunakan image bernama
echoserver
, yaitu sebuah server HTTP sederhana dan buka layanan pada porta 8080 dengan menggunakan opsi--port
.kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
Keluaran menyerupai:
deployment.apps/hello-minikube created
Untuk mengakses Deployment
hello-minikube
, bukalah dia sebagai sebuah Service:kubectl expose deployment hello-minikube --type=NodePort --port=8080
Opsi
--type=NodePort
menentukan tipe Service.Keluarannya menyerupai:
service/hello-minikube exposed
Pod
hello-minikube
saat ini telah dibuat namun kamu harus menunggu hingga Pod selesai dijalankan sebelum dapat mengaksesnya melalui Service yang telah dibuka.Cek apakah Pod sudah berjalan dan beroperasi:
kubectl get pod
Jika keluaran menampilkan
STATUS
sebagaiContainerCreating
, maka Pod sedang dalam proses pembuatan:NAME READY STATUS RESTARTS AGE hello-minikube-3383150820-vctvh 0/1 ContainerCreating 0 3s
Jika keluaran menampilkan
STATUS
sebagaiRunning
, maka Pod sudah berjalan dan beroperasi:NAME READY STATUS RESTARTS AGE hello-minikube-3383150820-vctvh 1/1 Running 0 13s
Ambil URL Service yang telah dibuka untuk melihat Service secara detail:
minikube service hello-minikube --url
Untuk melihat detail dari klaster lokal kamu, salin dan tempel URL yang kamu dapatkan dari keluaran pada peramban kamu.
Keluarannya menyerupai:
Hostname: hello-minikube-7c77b68cff-8wdzq Pod Information: -no pod information available- Server values: server_version=nginx: 1.13.3 - lua: 10008 Request Information: client_address=172.17.0.1 method=GET real path=/ query= request_version=1.1 request_scheme=http request_uri=http://192.168.99.100:8080/ Request Headers: accept=*/* host=192.168.99.100:30674 user-agent=curl/7.47.0 Request Body: -no body in request-
Jika kamu tidak lagi membutuhkan Service dan klaster, maka kamu bisa menghapusnya.
Hapuslah Service
hello-minikube
:kubectl delete services hello-minikube
Keluarannya menyerupai:
service "hello-minikube" deleted
Hapuslah Deployment
hello-minikube
:kubectl delete deployment hello-minikube
Keluarannya menyerupai:
deployment.extensions "hello-minikube" deleted
Hentikanlah klaster Minikube lokal:
minikube stop
Keluarannya menyerupai:
Stopping "minikube"... "minikube" stopped.
Untuk informasi lebih lanjut, lihatlah Menghentikan Klaster.
Hapuslah klaster Minikube lokal
minikube delete
Keluarannya menyerupai:
Deleting "minikube" ... The "minikube" cluster has been deleted.
Untuk informasi lebih lanjut, lihat Menghapus Klaster.
Mengelola Klaster
Memulai Klaster
Perintah minikube start
bisa digunakan untuk memulai klaster kamu.
Perintah ini membuat dan mengonfigurasi sebuah mesin virtual yang menjalankan klaster Kubernetes dengan satu Node.
Perintah ini juga mengonfigurasi instalasi kubectl untuk berkomunikasi dengan klaster ini.
Catatan:Jika kamu menggunakan proksi web, maka kamu harus meneruskan informasi berikut ini ke perintah
minikube start
:https_proxy=<my proxy> minikube start --docker-env http_proxy=<my proxy> --docker-env https_proxy=<my proxy> --docker-env no_proxy=192.168.99.0/24
Sayangnya, pengaturan dengan environment variable saja tidak berguna.
Minikube juga membuat konteks "minikube", dan menetapkannya sebagai bawaan di kubectl. Untuk kembali menggunakan konteks ini, jalankan perintah:
kubectl config use-context minikube
.
Menentukan Versi Kubernetes
Kamu bisa menentukan versi Kubernetes yang digunakan oleh Minikube dengan
menambahkan --kubernetes-version
ke perintah minikube start
. Sebagai
contoh, untuk menjalankan versi v1.20.15, kamu akan menjalankan perintah berikut:
minikube start --kubernetes-version v1.20.15
Menentukan driver VM
Kamu bisa mengubah driver VM dengan menambahkan tanda --driver=<masukan_nama_driver>
pada minikube start
.
Sebagai contoh:
minikube start --driver=<nama_driver>
Minikube mendukung driver berikut ini:
Catatan: Lihat DRIVER untuk detail tentang driver yang didukung dan proses instalasi plugin.
- (instalasi driver) docker
- (instalasi driver) virtualbox
- (instalasi driver) podman (TAHAP EXPERIMEN)
- vmwarefusion
- (instalasi driver) kvm2
- (instalasi driver) hyperkit
- (instalasi driver) hyperv
Perlu diingat bahwa IP dibawah adalah dinamik dan bisa berubah. IP ini bisa diambil dengan
minikube ip
. - (instalasi driver) vmware (driver VMware terpadu)
- (instalasi driver) parallels
- none (menjalankan komponen Kubernetes pada hos dan bukan pada mesin virtual. Kamu harus menjalankan Linux dan harus menginstal Docker.)
Perhatian: Jika kamu menggunakan drivernone
, beberapa komponen Kubernetes dijalankan sebagai Container istimewa yang memiliki efek samping di luar lingkungan Minikube. Efek samping tersebut berarti bahwa drivernone
tidak direkomendasikan untuk komputer pribadi.
Memulai klaster pada runtime kontainer alternatif
Kamu bisa memulai Minikube pada runtime kontainer berikut.
Untuk menggunakan containerd sebagai runtime kontainer, jalankan:
minikube start \
--network-plugin=cni \
--enable-default-cni \
--container-runtime=containerd \
--bootstrapper=kubeadm
Atau kamu bisa menggunakan versi yang diperpanjang:
minikube start \
--network-plugin=cni \
--enable-default-cni \
--extra-config=kubelet.container-runtime=remote \
--extra-config=kubelet.container-runtime-endpoint=unix:///run/containerd/containerd.sock \
--extra-config=kubelet.image-service-endpoint=unix:///run/containerd/containerd.sock \
--bootstrapper=kubeadm
Untuk menggunakan CRI-O sebagain runtime kontainer, jalankan:
minikube start \
--network-plugin=cni \
--enable-default-cni \
--container-runtime=cri-o \
--bootstrapper=kubeadm
Atau kamu bisa menggunakan versi yang diperpanjang:
minikube start \
--network-plugin=cni \
--enable-default-cni \
--extra-config=kubelet.container-runtime=remote \
--extra-config=kubelet.container-runtime-endpoint=/var/run/crio.sock \
--extra-config=kubelet.image-service-endpoint=/var/run/crio.sock \
--bootstrapper=kubeadm
Menggunakan image lokal degan menggunakan kembali daemon Docker
Saat menggunakan sebuah VM untuk Kubernetes, akan lebih baik jika daemon Docker bawaan Minikube digunakan kembali. Menggunakan kembali daemon bawaan membuat kamu tidak perlu membangun registri Docker pada mesin hos kamu dan mengunggah image ke dalamnya. Namun, kamu dapat membangun di dalam daemon Docker yang sama dengan Minikube, yang tentunya dapat mempercepat percobaan lokal.
Catatan: Pastikan untuk memberi tag pada Docker image kamu dengan sesuatu selainlatest
dan gunakan tag tersebut untuk menarik image. Karena:latest
adalah bawaan, dengan kebijakan penarikan image bawaan, yaituAlways
, kesalahan penarikan image (ErrImagePull
) akhirnya dapat terjadi jika kamu tidak memiliki image Docker di register Docker bawaan (biasanya DockerHub).
Untuk bekerja dengan daemon Docker pada mesin Mac/Linux, jalankan baris terakhir dari minikube docker-env
.
Kamu sekarang dapat menggunakan Docker di terminal mesin Mac/Linux kamu untuk berkomunikasi dengan daemon Docker di dalam VM Minikube:
docker ps
Catatan:Pada Centos 7, Docker bisa memberikan kesalahan berikut:
Could not read CA certificate "/etc/docker/ca.pem": open /etc/docker/ca.pem: no such file or directory
Kamu bisa memperbaikinya dengan memperbaharui /etc/sysconfig/docker untuk memastikan bahwa lingkungan Minikube dikenali:
< DOCKER_CERT_PATH=/etc/docker --- > if [ -z "${DOCKER_CERT_PATH}" ]; then > DOCKER_CERT_PATH=/etc/docker > fi
Mengonfigurasi Kubernetes
Minikube memiliki sebuah fitur "pengonfigurasi" yang memperbolehkan pengguna untuk mengkonfigurasi komponen Kubernetes dengan sembarang nilai.
Untuk menggunakan fitur ini, kamu bisa menggunakan flag --extra-config
pada perintah minikube start
.
Flag ini berulang, jadi kamu bisa menggunakannya beberapa kali dengan beberapa nilai yang berbeda untuk mengatur beberapa opsi.
Flag ini menerima sebuah string dalam format component.key=value
, di mana component
adalah salah satu string dari list di bawah, key
adalah nilai dari struct configurasi dan value
adalah nilai yang digunakan.
Kunci yang valid bisa ditemukan dengan memeriksa dokumentasi componentconfigs
Kubernetes untuk setiap komponen.
Berikut adalah dokumentasi untuk setiap konfigurasi yang didukung:
Contoh
Untuk mengubah pengaturan MaxPods
menjadi 5 pada Kubelet, gunakan flag ini: --extra-config=kubelet.MaxPods=5
.
Fitur ini juga mendukung struct yang berulang. Untuk mengubah pengaturan LeaderElection.LeaderElect
menjadi true
pada penjadwal, gunakan flag: --extra-config=scheduler.LeaderElection.LeaderElect=true
.
Untuk mengatur AuthorizationMode
pada apiserver
menjadi RBAC
, kamu bisa menggunakan: --extra-config=apiserver.authorization-mode=RBAC
.
Menghentikan klaster
Perintah minikube stop
bisa digunakan untuk menghentikan klaster kamu.
Perintah ini menghentikan mesin virtual Minikube, tapi mempertahankan semua status dan data klaster.
Memulai klaster lagi akan mengembalikannya ke keadaan sebelumnya.
Menghapus klaster
Perintah minikube delete
bisa digunakan untuk menghapus klaster kamu.
Perintah ini menghentikan dan menghapus mesin virtual Minikube. Tidak ada data atau state yang dipertahankan.
Memperbaharui Minikube
Jika kamu menggunakan MacOS dan Brew Package Manager sudah terpasang, jalankan:
brew update
brew upgrade minikube
Interaksi dengan Klaster Kamu
Kubectl
Perintah minikube start
membuat sebuah konteks kubectl yang disebut "minikube".
Konteks ini menyimpan pengaturan untuk berkomunikasi dengan klaster Minikube kamu.
Minikube menetapkan konteks ini sebagai bawaan secara otomatis, tetapi jika kamu ingin mengubah kembali ke konteks tersebut di kemudian hari, gunakan:
kubectl config use-context minikube
Atau berikan konteks untuk setiap perintah seperti ini:
kubectl get pods --context=minikube
Dashboard
Untuk mengakses Kubernetes Dashboard, gunakan perintah ini pada terminal setelah memulai Minikube untuk mendapatkan alamatnya:
minikube dashboard
Service
Untuk mengakses Service yang dibuka via NodePort, jalankan perintah ini pada terminal setelah memulai Minikube untuk mendapatkan alamat:
minikube service [-n NAMESPACE] [--url] NAME
Jaringan
Mesin virtual Minikube dibuka ke sistem hos melalui alamat IP host-only , yang bisa didapatkan dengan perintah minikube ip
.
Seluruh Service dengan jenis NodePort
bisa diakses melalui alamat IP pada NodePort.
Untuk mementukan NodePort pada Service kamu, kamu bisa menggunakan perintah kubectl
sebagai berikut:
kubectl get service $SERVICE --output='jsonpath="{.spec.ports[0].nodePort}"'
PersistentVolume
Minikube mendukung PersistentVolume dengan jenis hostPath
.
PersistenVolume ini dipetakan ke direktori di dalam mesin virtual Minikube.
Mesin virtual Minikube melakukan booting ke tmpfs, sehingga sebagian besar direktori tidak akan bertahan setelah di reboot (minikube stop
).
Namun, Minikube diatur untuk mempertahankan berkas yang tersimpan didalam direktori hos berikut:
/data
/var/lib/minikube
/var/lib/docker
Ini adalah contoh pengaturan PersistentVolume untuk mempertahankan data di dalam direktori /data
:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0001
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 5Gi
hostPath:
path: /data/pv0001/
Folder hos yang di mount
Beberapa driver akan memasang folder hos dalam VM sehingga kamu dapat dengan mudah berbagi berkas antara VM dan hos. Saat ini, hal tersebut tidak dapat dikonfigurasi dan berbeda untuk setiap driver dan sistem operasi yang kamu gunakan.
Catatan: Berbagi folder hos belum diimplementasikan pada driver KVM.
Driver | OS | HostFolder | VM |
---|---|---|---|
VirtualBox | Linux | /home | /hosthome |
VirtualBox | macOS | /Users | /Users |
VirtualBox | Windows | C://Users | /c/Users |
VMware Fusion | macOS | /Users | /mnt/hgfs/Users |
Xhyve | macOS | /Users | /Users |
Registri Container Pribadi
Untuk mengakses registri Container pribadi, ikuti langkah berikut pada halaman ini.
Kami merekomendasi penggunaan ImagePullSecrets
, tetapi jika kamu ingin mengonfigurasi akses pada virtual mesin Minikube, kamu bisa menempatkan .dockercfg
pada direktori /home/docker
atau config.json
dalam direktori /home/docker/.docker
.
Tambahan (Add-on)
Supaya Minikube memulai atau memulai kembali kustom tambahan dengan benar,
tempatkan tambahan yang ingin kamu jalankan di dalam direktori ~/.minikube/addons
.
Tambahan dalam folder akan dipindahkan ke virtual mesin Minikube dan dijalankan setiap kali Minikube
dimulai atau dimulai ulang.
Menggunakan Minikube dengan Proksi HTTP
Minikube membuat sebuah mesin virtual yang memasukkan Kubernetes dan daemon Docker. Ketika Kubernetes berusaha untuk menjadwalkan Container dengan Docker, daemon Docker mungkin membutuhkan akses jaringan eksternal untuk menarik Container.
Jika kamu berada di belakang proxy HTTP, kamu mungkin perlu menyediakan Docker dengan pengaturan proksi.
Untuk melakukan ini, berikan environment variable yang dibutuhkan sebagai flag pada saat minikube start
.
Contoh:
minikube start --docker-env http_proxy=http://$YOURPROXY:PORT \
--docker-env https_proxy=https://$YOURPROXY:PORT
Jika alamat mesin virtual kamu adalah 192.168.99.100, maka ada kemungkinan pengaturan proksi kamu akan mencegah kubectl
untuk mencapainya.
Untuk melewatkan konfigurasi proxy untuk alamat IP ini, kamu harus memodifikasi pengaturan _no_proxy` kamu. Kamu bisa melakukannya dengan:
export no_proxy=$no_proxy,$(minikube ip)
Masalah yang Diketahui
Fitur yang memerlukan banyak Node tidak akan berfungsi dalam Minikube.
Desain
Minikube menggunakan libmachine untuk menyediakan mesin virtual, dan kubeadm untuk menyediakan klaster Kubernetes.
Untuk info lebih lanjut tentang Minikube, lihat proposal.
Tautan Tambahan
- Tujuan and Non-Tujuan: Untuk tujuan dan non-tujuan dari projek Minikube, lihat roadmap.
- Petunjuk Pengembangan: Lihat Berkontribusi untuk ikhtisar bagaimana cara mengirimkan pull request.
- Membangun Minikube: Untuk instruksi bagaimana membangun atau mengetes Minikube dari sumber kode, lihat petunjuk membangun.
- Menambahkan Dependensi Baru: Untuk instruksi bagaimana menambahkan dependensi baru ke Minikube, lihat petunjuk penambahan dependensi.
- Menambahkan Addon Baru: Untuk instruksi bagaimana menambahkan tambahan baru untuk Minikube, lihat petunjuk menambahkan addon baru.
- MicroK8s: Pengguna Linux yang ingin menghindari penggunaan mesin virtual, bisa mempertimbangkan MicroK8s sebagai alternatif.
Komunitas
Kontribusi, pertanyaan, dan komentar sangat diharapkan! Pengembang Minikube berkumpul dalam Slack di channel #minikube (dapatkan undangan di sini). Kami juga memiliki milis kubernetes-dev Google Groups. Jika kamu memposting sesuatu, awali subjek kamu dengan "minikube: ".