Skip to content

Commit 300d06d

Browse files
authored
Merge pull request #22912 from danninov/id/configure-volume-storage
Add ID localization task configure volume storage
2 parents 58ece2c + 57fe47c commit 300d06d

File tree

2 files changed

+149
-0
lines changed

2 files changed

+149
-0
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
---
2+
title: Mengatur Pod untuk Menggunakan Volume sebagai Tempat Penyimpanan
3+
content_type: task
4+
weight: 50
5+
---
6+
7+
<!-- overview -->
8+
9+
Laman ini menjelaskan bagaimana cara mengatur sebuah Pod untuk menggunakan Volume sebagai tempat penyimpanan.
10+
11+
_Filesystem_ dari sebuah Container hanya hidup selama Container itu juga hidup. Saat Container berakhir dan dimulai ulang, perubahan pada _filesystem_ akan hilang. Untuk penyimpanan konsisten yang independen dari Container, kamu dapat menggunakan [Volume](/id/docs/concepts/storage/volumes/). Hal ini penting terutama untuk aplikasi _stateful_, seperti _key-value stores_ (contohnya Redis) dan database.
12+
13+
14+
## {{% heading "prerequisites" %}}
15+
16+
17+
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
18+
19+
20+
21+
<!-- steps -->
22+
23+
## Mengatur volume untuk Pod
24+
25+
Pada latihan ini, kamu membuat sebuah Pod yang menjalankan sebuah Container. Pod ini memiliki sebuah Volume dengan tipe [emptyDir](/id/docs/concepts/storage/volumes/#emptydir)
26+
yang tetap bertahan, meski Container berakhir dan dimulai ulang. Berikut berkas konfigurasi untuk Pod:
27+
28+
{{< codenew file="pods/storage/redis.yaml" >}}
29+
30+
1. Membuat Pod:
31+
32+
```shell
33+
kubectl apply -f https://k8s.io/examples/pods/storage/redis.yaml
34+
```
35+
36+
2. Verifikasi apakah Container dari Pod berjalan sukses, lalu mengamati perubahan terhadap Pod:
37+
38+
```shell
39+
kubectl get pod redis --watch
40+
```
41+
42+
Hasil keluaran seperti ini:
43+
44+
```shell
45+
NAME READY STATUS RESTARTS AGE
46+
redis 1/1 Running 0 13s
47+
```
48+
49+
1. Pada terminal lain, buka _shell_ untuk masuk ke Container yang sedang berjalan:
50+
51+
```shell
52+
kubectl exec -it redis -- /bin/bash
53+
```
54+
55+
1. Di dalam _shell_, pergi ke `/data/redis`, kemudian buat sebuah berkas:
56+
57+
```shell
58+
root@redis:/data# cd /data/redis/
59+
root@redis:/data/redis# echo Hello > test-file
60+
```
61+
62+
1. Di dalam _shell_, munculkan daftar proses-proses yang sedang berjalan:
63+
64+
```shell
65+
root@redis:/data/redis# apt-get update
66+
root@redis:/data/redis# apt-get install procps
67+
root@redis:/data/redis# ps aux
68+
```
69+
70+
Keluarannya mirip seperti ini:
71+
72+
```shell
73+
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
74+
redis 1 0.1 0.1 33308 3828 ? Ssl 00:46 0:00 redis-server *:6379
75+
root 12 0.0 0.0 20228 3020 ? Ss 00:47 0:00 /bin/bash
76+
root 15 0.0 0.0 17500 2072 ? R+ 00:48 0:00 ps aux
77+
```
78+
79+
1. Di dalam _shell_, matikan proses Redis:
80+
81+
```shell
82+
root@redis:/data/redis# kill <pid>
83+
```
84+
85+
dengan `<pid>` adalah ID proses Redis (PID).
86+
87+
2. Di dalam terminal awal, amati perubahan terhadap Pod Redis. Sampai akhirnya kamu akan melihat hal seperti ini:
88+
89+
```shell
90+
NAME READY STATUS RESTARTS AGE
91+
redis 1/1 Running 0 13s
92+
redis 0/1 Completed 0 6m
93+
redis 1/1 Running 1 6m
94+
```
95+
96+
Sampai di sini, Container telah berakhir dan dimuat ulang. Hal ini karena Pod Redis memiliki
97+
[restartPolicy](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podspec-v1-core)
98+
dengan nilai `Always`.
99+
100+
1. Gunakan _shell_ untuk masuk ke dalam Container yang telah dimuat ulang:
101+
102+
```shell
103+
kubectl exec -it redis -- /bin/bash
104+
```
105+
106+
2. Di dalam _shell_, pergi ke `/data/redis`, dan verifikasi apakah `test-file` masih ada.
107+
```shell
108+
root@redis:/data/redis# cd /data/redis/
109+
root@redis:/data/redis# ls
110+
test-file
111+
```
112+
113+
3. Hapus Pod yang kamu buat untuk latihan ini:
114+
115+
```shell
116+
kubectl delete pod redis
117+
```
118+
119+
120+
121+
## {{% heading "whatsnext" %}}
122+
123+
124+
* Lihat [Volume](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#volume-v1-core).
125+
126+
* Lihat [Pod](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#pod-v1-core).
127+
128+
* Selain penyimpanan pada disk lokal yang di sediakan oleh `emptyDir`, Kubernetes
129+
juga mendukung solusi penyimpanan _network-attached_, termasuk PD pada
130+
GCE dan EBS dari EC2, yang cenderung lebih disukai untuk data sangat penting dan akan menangani urusan detil seperti _mounting_ dan _unmounting_ perangkat pada Node. Lihat
131+
[Volume](/id/docs/concepts/storage/volumes/) untuk informasi detil.
132+
133+
134+
135+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: redis
5+
spec:
6+
containers:
7+
- name: redis
8+
image: redis
9+
volumeMounts:
10+
- name: redis-storage
11+
mountPath: /data/redis
12+
volumes:
13+
- name: redis-storage
14+
emptyDir: {}

0 commit comments

Comments
 (0)