-
Notifications
You must be signed in to change notification settings - Fork 14.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix broken layout of kubernetes id concepts (#13972)
* Fix broken layout of kubernetes id concepts * Add search and sitemap to root directory of docs * Fix minor typo
- Loading branch information
1 parent
d831aa2
commit a1af880
Showing
5 changed files
with
227 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
--- | ||
title: Konsep | ||
main_menu: true | ||
content_template: templates/concept | ||
weight: 40 | ||
--- | ||
|
||
{{% capture overview %}} | ||
|
||
Bagian konsep ini membantu kamu belajar tentang bagian-bagian sistem serta abstraksi | ||
yang digunakan Kubernetes untuk merepresentasikan kluster kamu, serta membantu | ||
kamu belajar lebih dalam bagaimana cara kerja Kubernetes. | ||
|
||
{{% /capture %}} | ||
|
||
{{% capture body %}} | ||
|
||
## Ikhtisar | ||
|
||
Untuk menggunakan Kubernetes, kamu menggunakan obyek-obyek *Kubernetes API* untuk merepresentasikan | ||
*state* yang diinginkan: apa yang aplikasi atau *workload* lain yang ingin kamu | ||
jalankan, *image* kontainer yang digunakan, jaringan atau *resource disk* apa yang ingin | ||
kamu sediakan, dan lain sebagainya. Kamu membuat *state* yang diinginkan dengan cara membuat | ||
obyek dengan menggunakan API Kubernetes, dan biasanya menggunakan `command-line interface`, yaitu `kubectl`. | ||
Kamu juga dapat secara langsung berinteraksi dengan kluster untuk membuat atau mengubah | ||
*state* yang kamu inginkan. | ||
|
||
Setelah kamu membuat *state* yang kamu inginkan, *Control Plane* Kubernetes | ||
menggunakan `Pod Lifecycle Event Generator (PLEG)` untuk mengubah | ||
*state* yang ada saat ini supaya sama dengan *state* yang diinginkan. | ||
Untuk melakukan hal tersebut, Kubernetes melakukan berbagai *task* secara otomatis, | ||
misalnya dengan mekanisme `start` atau `stop` kontainer, melakukan *scale* replika dari | ||
suatu aplikasi, dan lain sebagainya. *Control Plane* Kubernetes terdiri dari sekumpulan | ||
`process` yang dijalankan di kluster: | ||
|
||
* **Kubernetes Master** terdiri dari tiga buah *process* yang dijalankan pada sebuah *node* di kluster kamu, *node* ini disebut sebagai *master*, yang terdiri [kube-apiserver](/docs/admin/kube-apiserver/), [kube-controller-manager](/docs/admin/kube-controller-manager/) dan [kube-scheduler](/docs/admin/kube-scheduler/). | ||
* Setiap *node* non-master pada kluster kamu menjalankan dua buah *process*: | ||
* **[kubelet](/docs/admin/kubelet/)**, yang menjadi perantara komunikasi dengan *master*. | ||
* **[kube-proxy](/docs/admin/kube-proxy/)**, sebuah *proxy* yang merupakan representasi jaringan yang ada pada setiap *node*. | ||
|
||
## Obyek Kubernetes | ||
|
||
Kubernetes memiliki beberapa abstraksi yang merepresentasikan *state* dari sistem kamu: | ||
apa yang aplikasi atau *workload* lain yang ingin kamu jalankan, jaringan atau *resource disk* apa yang ingin | ||
kamu sediakan, serta beberapa informasi lain terkait apa yang sedang kluster kamu lakukan. | ||
Abstraksi ini direpresentasikan oleh obyek yang tersedia di API Kubernetes; | ||
lihat [ikhtisar obyek-obyek Kubernetes](/docs/concepts/abstractions/overview/) | ||
untuk penjelasan yang lebih mendetail. | ||
|
||
Obyek mendasar Kubernetes termasuk: | ||
|
||
* [Pod](/docs/concepts/workloads/pods/pod-overview/) | ||
* [Service](/docs/concepts/services-networking/service/) | ||
* [Volume](/docs/concepts/storage/volumes/) | ||
* [Namespace](/docs/concepts/overview/working-with-objects/namespaces/) | ||
|
||
Sebagai tambahan, Kubernetes memiliki beberapa abstraksi yang lebih tinggi yang disebut kontroler. | ||
Kontroler merupakan obyek mendasar dengan fungsi tambahan, contoh dari kontroler ini adalah: | ||
|
||
* [ReplicaSet](/docs/concepts/workloads/controllers/replicaset/) | ||
* [Deployment](/docs/concepts/workloads/controllers/deployment/) | ||
* [StatefulSet](/docs/concepts/workloads/controllers/statefulset/) | ||
* [DaemonSet](/docs/concepts/workloads/controllers/daemonset/) | ||
* [Job](/docs/concepts/workloads/controllers/jobs-run-to-completion/) | ||
|
||
## *Control Plane* Kubernetes | ||
|
||
Berbagai bagian *Control Plane* Kubernetes, seperti *master* dan *process-process* kubelet, | ||
mengatur bagaimana Kubernetes berkomunikasi dengan kluster kamu. *Control Plane* | ||
menjaga seluruh *record* dari obyek Kubernetes serta terus menjalankan | ||
iterasi untuk melakukan manajemen *state* obyek. *Control Plane* akan memberikan respon | ||
apabila terdapat perubahan pada kluster kamu dan mengubah *state* saat ini agar sesuai | ||
dengan *state* yang diinginkan. | ||
|
||
Contohnya, ketika kamu menggunakan API Kubernetes untuk membuat sebuah *Deployment*, | ||
kamu memberikan sebuah *state* baru yang harus dipenuhi oleh sistem. *Control Plane* | ||
kemudian akan mencatat obyek apa saja yang dibuat, serta menjalankan instruksi yang kamu berikan | ||
dengan cara melakukan `start` aplikasi dan melakukan `scheduling` aplikasi tersebut | ||
pada *node*, dengan kata lain mengubah *state* saat ini agar sesuai dengan *state* yang diinginkan. | ||
|
||
### Master | ||
|
||
Master Kubernetes bertanggung jawab untuk memelihara *state* yang diinginkan pada kluster kamu. | ||
Ketika kamu berinteraksi dengan Kubernetes, misalnya saja menggunakan perangkat `kubectl`, | ||
kamu berkomunikasi dengan *master* kluster Kubernetes kamu. | ||
|
||
> "master" merujuk pada tiga buah *process* yang dijalankan pada sebuah *node* pada kluster kamu, *node* ini disebut sebagai *master*, yang terdiri [kube-apiserver](/docs/admin/kube-apiserver/), [kube-controller-manager](/docs/admin/kube-controller-manager/) dan [kube-scheduler](/docs/admin/kube-scheduler/). | ||
### Node | ||
|
||
*Node* di dalam kluster Kubernetes adalah mesin (mesin virtual maupun fisik) yang | ||
menjalankan aplikasi kamu. Master mengontrol setiap node; kamu akan jarang berinteraksi | ||
dengan *node* secara langsung. | ||
|
||
#### Metadata obyek | ||
|
||
|
||
* [Anotasi](/docs/concepts/overview/working-with-objects/annotations/) | ||
|
||
{{% /capture %}} | ||
|
||
{{% capture whatsnext %}} | ||
|
||
Jika kamu ingin menulis halaman konsep, perhatikan | ||
[cara penggunaan template pada laman](/docs/home/contribute/page-templates/) | ||
untuk informasi mengenai konsep tipe halaman dan *template* konsep. | ||
|
||
{{% /capture %}} |
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
layout: search | ||
title: Hasil Pencarian | ||
--- | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
--- | ||
--- | ||
<script language="JavaScript"> | ||
var dropDownsPopulated = false; | ||
$( document ).ready(function() { | ||
// When the document loads, get the metadata JSON, and kick off tbl render | ||
$.get("/metadata.txt", function(data, status) { | ||
metadata = $.parseJSON(data); | ||
metadata.pages.sort(dynamicSort("t")); | ||
mainLogic() | ||
$(window).bind( 'hashchange', function(e) { | ||
mainLogic(); | ||
}); | ||
}); | ||
}); | ||
function mainLogic() | ||
{ | ||
// If there's a tag filter, change the table/drop down output | ||
if (!dropDownsPopulated) populateDropdowns(); | ||
var tag=window.location.hash.replace("#",""); | ||
if(tag) { | ||
tag = $.trim(tag); | ||
for (i=0;i<tagName.length;i++) { | ||
querystringTag = tagName[i] + "="; | ||
if (tag.indexOf(querystringTag) > -1) | ||
{ | ||
console.log("in mainLog: querystringTag of " + querystringTag + " matches tag of " + tag); | ||
tag = tag.replace(querystringTag,""); | ||
selectDropDown(tagName[i],tag); | ||
topicsFilter(tagName[i],tag,"output"); | ||
} | ||
} | ||
} else { | ||
currentTopics = metadata.pages; | ||
} | ||
renderTable(currentTopics,"output"); | ||
|
||
} | ||
function populateDropdowns() | ||
{ | ||
// Keeping mainLogic() brief by functionalizing the initialization of the | ||
// drop-down filter boxes | ||
|
||
for(i=0;i<metadata.pages.length;i++) | ||
{ | ||
var metadataArrays = [metadata.pages[i].cr,metadata.pages[i].or,metadata.pages[i].mr]; | ||
for(j=0;j<metadataArrays.length;j++) | ||
{ | ||
if (metadataArrays[j]) { | ||
for (k=0;k<metadataArrays[j].length;k++) { | ||
if (typeof storedTagsArrays[j] == 'undefined') storedTagsArrays[j] = new Array(); | ||
storedTagsArrays[j][metadataArrays[j][k][tagName[j]]] = true; | ||
// ^ conceptList[metadata.pages[i].cr[k].concept] = true; (if rolling through concepts) | ||
// ^ conceptList['container'] = true; (ultimate result) | ||
// ^ objectList[metadata.pages[i].or[k].object] = true; (if rolling through objects) | ||
// ^ objectList['restartPolicy'] = true; (ultimate result) | ||
} | ||
} | ||
} | ||
} | ||
var output = new Array(); | ||
for(i=0;i<tagName.length;i++) | ||
{ | ||
// Phew! All tags in conceptList, objectList, and commandList! | ||
// Loop through them and populate those drop-downs through html() injection | ||
output = []; | ||
output.push("<select id='" + tagName[i] + "' onchange='dropFilter(this)'>"); | ||
output.push("<option>---</option>"); | ||
Object.keys(storedTagsArrays[i]).sort().forEach(function (key) { | ||
output.push("<option>" + key + "</option>"); | ||
}); | ||
output.push("</select>") | ||
$(dropDowns[i]).html(output.join("")); | ||
} | ||
dropDownsPopulated = true; | ||
} | ||
function dropFilter(srcobj) | ||
{ | ||
// process the change of a drop-down value | ||
// the ID of the drop down is either command, object, or concept | ||
// these exact values are what topicsFilter() expects, plus a filter val | ||
// which we get from .text() of :selected | ||
console.log("dropFilter:" + $(srcobj).attr('id') + ":" + $(srcobj).find(":selected").text()); | ||
topicsFilter($(srcobj).attr('id').replace("#",""),$(srcobj).find(":selected").text(),"output"); | ||
for(i=0;i<tagName.length;i++) | ||
{ | ||
if($(srcobj).attr('id')!=tagName[i]) selectDropDown(tagName[i],"---"); | ||
} | ||
} | ||
function selectDropDown(type,tag) | ||
{ | ||
// change drop-down selection w/o filtering | ||
$("#" + type).val(tag); | ||
} | ||
</script> | ||
<style> | ||
#filters select{ | ||
font-size: 14px; | ||
border: 1px #000 solid; | ||
} | ||
#filters { | ||
padding-top: 20px; | ||
} | ||
</style> | ||
|
||
Pilih <i>tag</i> atau gunakan <i>drop down</i> untuk melakukan filter. Pilih <i>header</i> pada tabel untuk mengurutkan. | ||
|
||
<p id="filters"> | ||
Filter berdasarkan Konsep: <span id="conceptFilter" /><br/> | ||
Filter berdasarkan Obyek: <span id="objectFilter" /><br/> | ||
Filter berdasarkan Perintah: <span id="commandFilter" /> | ||
</p> | ||
|
||
<div id="output" /> |