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 typopull/13982/head
parent
d831aa23ac
commit
a1af880564
|
@ -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 %}}
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
layout: search
|
||||
title: Hasil Pencarian
|
||||
---
|
||||
|
|
@ -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" />
|
Loading…
Reference in New Issue