├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── assets
├── README.md
├── contents
│ ├── README.md
│ └── concepts
│ │ ├── architecture
│ │ └── architecture.png
│ │ ├── manifests
│ │ └── manifests.png
│ │ └── resources
│ │ └── workloads
│ │ └── pods.png
└── main
│ └── structure.png
└── contents
├── README.md
├── cheatsheets
├── README.md
├── kubectl.md
└── manifests.md
├── concepts
├── README.md
├── architecture
│ └── README.md
├── manifests
│ └── README.md
└── resources
│ ├── README.md
│ ├── authz
│ ├── README.md
│ ├── clusterrole.md
│ ├── clusterrolebinding.md
│ ├── role.md
│ ├── rolebinding.md
│ └── serviceaccount.md
│ ├── cluster
│ ├── README.md
│ ├── namespace.md
│ └── node.md
│ ├── scaling
│ ├── README.md
│ ├── horizontalpodautoscaler.md
│ ├── poddisruptionbudget.md
│ └── verticalpodautoscaler.md
│ ├── security
│ ├── README.md
│ ├── certificatesigningrequest.md
│ ├── limitrange.md
│ ├── networkpolicy.md
│ ├── podsecuritypolicy.md
│ └── resourcequota.md
│ ├── service
│ ├── README.md
│ ├── endpoints.md
│ ├── endpointslice.md
│ ├── ingress.md
│ └── service.md
│ ├── storage
│ ├── README.md
│ ├── configmap.md
│ ├── persistentvolume.md
│ ├── persistentvolumeclaim.md
│ ├── secret.md
│ └── storageclass.md
│ └── workloads
│ ├── README.md
│ ├── cronjob.md
│ ├── daemonset.md
│ ├── deployment.md
│ ├── job.md
│ ├── pods.md
│ ├── replicaset.md
│ ├── replicationcontroller.md
│ └── statefulset.md
├── examples
└── README.md
├── practices
└── README.md
├── tools
├── README.md
└── installation
│ ├── README.md
│ ├── charmed-kubernetes.md
│ ├── k3d.md
│ ├── k3s.md
│ ├── kind.md
│ ├── kops.md
│ ├── kubeadm.md
│ ├── kubekey.md
│ ├── kubeone.md
│ ├── kubermatic.md
│ ├── kubesphere.md
│ ├── kubespray.md
│ ├── microk8s.md
│ ├── minikube.md
│ └── rke.md
└── tutorials
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/.gitignore
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contribution Guideline
2 |
3 | If you intend to contribute to the Kubernetes Complete Reference, this guideline is for you.
4 |
5 | ### Who are called contributors?
6 |
7 | Contribution in this Kubernetes reference is not limited to special people of special knowledge. **EVERYONE** can contribute to this repository, and all contributions are welcomed. For clarifying how to contribute to this reference, we divide contribution topics into the following ones. Please note that contributions are not just limited to these topics. You are free to update this guideline too.
8 |
9 | - Contributors who are interested in develop the reference, topics that are currently added to the **Table of Contents** section.
10 | - Developers and maintainers of the tools that are related to the Kubernetes ecosystem. Add your product guideline.
11 | - Who one interested in Kubernetes, by suggestion to add new items in the reference, feel free to file an issue.
12 | - Those ones have read the reference and found bugs, by fixing the bugs or file an issue.
13 | - Who one that has a blog, news channel, group, community, etc., by introducing the reference to others
14 |
15 | ### Copyright agreements:
16 |
17 | - All wrote contents of this repository are distributed with [Apache 2.0](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/LICENSE) license.
18 | - All graphical artifacts like diagrams, infographics, etc., are distributed with their original license.
19 | - Spiritual and material rights of external products and resources are reserved for their original publisher.
20 | - All rights of the original publishers should be reserved.
21 |
22 | ## How to contribute:
23 |
24 | The contribution cycle is so easy. Just follow these steps and contribute:
25 |
26 | 1. Fork the repository.
27 | 2. Write, develop, add, bugfix, etc., everything you want.
28 | 3. Make a repository pull request.
29 | 4. The pull request is merged after confirmation.
30 | 5. **Congratulations!** You are a contributor.
31 |
32 | ## Reference Structure:
33 |
34 | This reference is developed in a simple, readable, and trackable way.
35 |
36 | For making any changes, please follow the structure like the following one:
37 |
38 |
39 |
40 |
41 |
42 | We can't wait for your contributions. DO it NOW.
43 |
44 | Wish you all the best.
45 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright 2021 Saeid Bostandoust
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # kubernetes-complete-reference
2 |
3 | 
4 | 
5 | [](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/LICENSE)
6 | [](https://github.com/ssbostan/kubernetes-complete-reference/stargazers)
7 | [](https://github.com/ssbostan/kubernetes-complete-reference/network)
8 | [](https://github.com/ssbostan/kubernetes-complete-reference/issues)
9 |
10 |
11 |
12 |
13 |
14 | The completest reference for the Kubernetes container orchestration engine.
15 |
16 | Created by ssbostan and contributors.
17 |
18 | # What is Kubernetes?
19 |
20 | Kubernetes - aka K8s - is a container orchestration engine for automating deployment, scaling, and management of containerized applications. With Kubernetes, a set of container engines (Docker, Containerd, CRI-O, etc.) that were deployed on various servers (both physical and virtual) can be brought together to manage complex container-based software environments. The set of these servers is called the Kubernetes Cluster. So to speak, the Kubernetes cluster is a set of nodes that can run containers which they managed centrally with an amazing tool called Kubernetes. Kubernetes is a leading container orchestration engine in the current container ecosystem.
21 |
22 | ## Why we need Kubernetes?
23 |
24 | In software environments that use containers, usually microservices, we have many concerns such as storage and network needs, dynamic configuration per run environments, load balancing, application scaling, high availability, etc. Kubernetes is the answer to these concerns. With the Kubernetes platform, all things such as that described above are managed automatically by this great platform. Before Kubernetes, these concerns were solved manually or automatically in scattered tools. With Kubernetes, all of them are done on just one platform.
25 |
26 | # Table of Contents:
27 |
28 | Kubernetes topics are categorized into these top headers. It may change in future.
29 |
30 | 1. **Kubernetes Concepts**
31 | - [**Kubernetes Architecture**](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md)
32 | - [Data plane](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#data-plane)
33 | - [Etcd cluster](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#data-plane)
34 | - [Control plane](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#control-plane)
35 | - [kube-apiserver](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#kube-apiserver)
36 | - [kube-controller-manager](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#kube-controller-manager)
37 | - [kube-scheduler](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#kube-scheduler)
38 | - [cloud-controller-manager](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#cloud-controller-manager)
39 | - [Worker nodes](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#worker-nodes)
40 | - [kubelet](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#kubelet)
41 | - [kube-proxy](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#kube-proxy)
42 | - [Container Runtime](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/architecture/README.md#container-runtime)
43 | - [**Kubernetes Manifests**](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/manifests/README.md)
44 | - [Manifest Metadata (ObjectMeta)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/manifests/README.md#objectmeta)
45 | - **Kubernetes Resources**
46 | - **Kubernetes Workloads**
47 | - [Pods](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/workloads/pods.md)
48 | - [ReplicationController](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/workloads/replicationcontroller.md)
49 | - [ReplicaSet](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/workloads/replicaset.md)
50 | - [Deployment](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/workloads/deployment.md)
51 | - [DaemonSet](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/workloads/daemonset.md)
52 | - [StatefulSet](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/workloads/statefulset.md)
53 | - [Job](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/workloads/job.md)
54 | - [CronJob](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/workloads/cronjob.md)
55 | - **Service Discovery and Load Balancing**
56 | - [Service](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/service/service.md)
57 | - [Endpoints](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/service/endpoints.md)
58 | - [EndpointSlice](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/service/endpointslice.md)
59 | - [Ingress](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/service/ingress.md)
60 | - **Config and Storage Resources**
61 | - [ConfigMap](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/storage/configmap.md)
62 | - [Secret](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/storage/secret.md)
63 | - [PersistentVolume](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/storage/persistentvolume.md)
64 | - [PersistentVolumeClaim](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/storage/persistentvolumeclaim.md)
65 | - [StorageClass](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/storage/storageclass.md)
66 | - **High-Availability and Scaling Resources**
67 | - [PodDisruptionBudget](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/scaling/poddisruptionbudget.md)
68 | - [HorizontalPodAutoscaler](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/scaling/horizontalpodautoscaler.md)
69 | - [VerticalPodAutoscaler](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/scaling/verticalpodautoscaler.md)
70 | - **Authentication and Authorization**
71 | - [Role](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/authz/role.md)
72 | - [ClusterRole](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/authz/clusterrole.md)
73 | - [RoleBinding](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/authz/rolebinding.md)
74 | - [ClusterRoleBinding](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/authz/clusterrolebinding.md)
75 | - [ServiceAccount](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/authz/serviceaccount.md)
76 | - **Security and Quota Management Resources**
77 | - [NetworkPolicy](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/security/networkpolicy.md)
78 | - [PodSecurityPolicy](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/security/podsecuritypolicy.md)
79 | - [CertificateSigningRequest](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/security/certificatesigningrequest.md)
80 | - [ResourceQuota](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/security/resourcequota.md)
81 | - [LimitRange](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/security/limitrange.md)
82 | - **Kubernetes Cluster Resources**
83 | - [Namespace](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/cluster/namespace.md)
84 | - [Node](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/concepts/resources/cluster/node.md)
85 | 2. **Kubernetes Cheatsheets**
86 | - [Kubernetes kubectl CLI](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/cheatsheets/kubectl.md)
87 | - [Kubernetes YAML Manifests (All-in-one)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/cheatsheets/manifests.md)
88 | 3. **Kubernetes Best Practices**
89 | 4. **Kubernetes Tutorials**
90 | - **External Resources**
91 | - [Kubernetes Installation Methods The Complete Guide](https://itnext.io/kubernetes-installation-methods-the-complete-guide-1036c860a2b3)
92 | - [Kubernetes Storage — Part 1 — NFS complete tutorial](https://itnext.io/kubernetes-storage-part-1-nfs-complete-tutorial-75e6ac2a1f77)
93 | - [Kubernetes Storage — Part 2 — GlusterFS complete tutorial](https://itnext.io/kubernetes-storage-part-2-glusterfs-complete-tutorial-77542c12a602)
94 | 5. **Kubernetes Tools**
95 | - **Installation Tools**
96 | - [Kubeadm (Official Installation Tool)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/kubeadm.md)
97 | - [minikube (Local Kubernetes cluster)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/minikube.md)
98 | - [Kubespray (Ansible-based Installer)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/kubespray.md)
99 | - [Kops (Kubernetes Operations)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/kops.md)
100 | - [Charmed Kubernetes (Ubuntu Juju)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/charmed-kubernetes.md)
101 | - [KinD (Kubernetes in Docker)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/kind.md)
102 | - [K3s (Rancher Lightweight Kubernetes)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/k3s.md)
103 | - [K3d (Rancher K3s in Docker)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/k3d.md)
104 | - [MicroK8s (Canonical Zero-ops Kubernetes)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/microk8s.md)
105 | - [RKE (Rancher Kubernetes Engine)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/rke.md)
106 | - [KubeSphere (Distributed Kubernetes Platform)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/kubesphere.md)
107 | - [KubeKey (KubeSphere Installer)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/kubekey.md)
108 | - [Kubermatic (Central Kubernetes Management Platform)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/kubermatic.md)
109 | - [KubeOne (Kubermatic Installer)](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/contents/tools/installation/kubeone.md)
110 | 6. **Kubernetes Examples**
111 |
112 | # How to contribute:
113 |
114 | All contributions are welcomed. [CONTRIBUTING.md](https://github.com/ssbostan/kubernetes-complete-reference/blob/master/CONTRIBUTING.md)
115 |
116 | Everyone interested in the Kubernetes can contribute to this reference.
117 |
118 | Saeid Bostandoust
119 |
--------------------------------------------------------------------------------
/assets/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/assets/README.md
--------------------------------------------------------------------------------
/assets/contents/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/assets/contents/README.md
--------------------------------------------------------------------------------
/assets/contents/concepts/architecture/architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/assets/contents/concepts/architecture/architecture.png
--------------------------------------------------------------------------------
/assets/contents/concepts/manifests/manifests.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/assets/contents/concepts/manifests/manifests.png
--------------------------------------------------------------------------------
/assets/contents/concepts/resources/workloads/pods.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/assets/contents/concepts/resources/workloads/pods.png
--------------------------------------------------------------------------------
/assets/main/structure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/assets/main/structure.png
--------------------------------------------------------------------------------
/contents/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/README.md
--------------------------------------------------------------------------------
/contents/cheatsheets/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/cheatsheets/README.md
--------------------------------------------------------------------------------
/contents/cheatsheets/kubectl.md:
--------------------------------------------------------------------------------
1 | # Kubernetes kubectl CLI Cheatsheet
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/cheatsheets/manifests.md:
--------------------------------------------------------------------------------
1 | # Kubernetes YAML Manifests Cheatsheet
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/concepts/README.md
--------------------------------------------------------------------------------
/contents/concepts/architecture/README.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Architecture
2 |
3 | Each **Kubernetes cluster** is divided into three parts, **Data plane**, **Control plane**, and **Workers**. The data plane, **Etcd**, is responsible for store Kubernetes data like configurations, manifests, resources, etc. The control plane that runs various components is responsible for managing the whole cluster as well as the worker nodes. Worker nodes are responsible for running and managing containers.
4 |
5 |
6 |
7 |
8 |
9 | ## Data plane:
10 |
11 | **Etcd** is a distributed key-value store that is used as a Kubernetes database to store Kubernetes data. You should note that the meaning of data does not files! We are talking about the cluster configuration, resources, manifests, etc. Because of the nature of distributed systems, we need to run Etcd in a clustered way. So to speak, An etcd cluster needs a majority of nodes, a quorum, to agree on updates to the cluster state. For a cluster with n members, a quorum is (n/2)+1. For any odd-sized cluster, adding one node will always increase the number of nodes necessary for a quorum. All cluster data are stored in the Etcd database. You should have a proper backup solution for it.
12 |
13 | > Minimum viable clusters must have at least three Etcd nodes.
14 |
15 | > Production-ready clusters are run with at least five dedicated Etcd nodes.
16 |
17 | ## Control plane:
18 |
19 | The Kubernetes control plane that was formerly called Master is the brain of Kubernetes that manages the whole cluster and worker nodes. A couple of components that each one has a specific function are run in the control plane nodes. These components are described below.
20 |
21 | > For high availability, at least two control plane nodes must exist in the cluster.
22 |
23 | > Production-ready clusters are run with at least three control plane nodes.
24 |
25 | ### kube-apiserver:
26 |
27 | The API server is the main component of the Kubernetes control plane that exposes the Kubernetes API to clients. All clients (other components and users) are connected to Kube-apiserver to do their works. The API server is the only component that is connected directly to the data plane, Etcd. All data operations should be done through the API server, and this component is responsible for responding to client requests. The API server is a stateless service that can be run in a highly available fashion. Just run several instances and balance traffic between them.
28 |
29 | > For high availability, run at least two instances of Kube-apiserver on different servers.
30 |
31 | ### kube-controller-manager:
32 |
33 | This component is responsible for managing Kubernetes resources. Almost every Kubernetes resource has a controller. For example, checking resource state, controlling the application desired state and replicas, applications high availability, checking nodes and applications liveness are some functions and responsibilities of this component. Although each controller is run in a separate process but to reduce complexity, they are all compiled into a single binary and run in a single process. The high availability of the Kube-controller-manager is done by leader election. In simple words, leader election is a mechanism that guarantees only one instance of service is responsible for making decisions. While all other instances are inactive, but they are ready to hold a new election and announcing a new leader when something happens to the current leader. All instances except the leader are locked and cannot make any decision.
34 |
35 | > For high availability, run at least two instances of Kube-controller-manager on different servers.
36 |
37 | ### kube-scheduler:
38 |
39 | Where Kubernetes pods should be running is the major responsibility of this component. The scheduler is responsible for selecting eligible nodes to run newly created pods. When a new pod is created by a user or a controller, no nodes are assigned for running that pod, and the scheduler must assign a proper node to run that. Many factors like resource requirements, policy constraints, affinity, and anti-affinity are taken into account for scheduling decisions. In the case of high-availability deployment, this component is just like Kube-controller-manager, and more than one instance can not be active at the same time.
40 |
41 | > For high availability, run at least two instances of Kube-scheduler on different servers.
42 |
43 | ### cloud-controller-manager:
44 |
45 | This component is a cloud-specific unit that runs where Kubernetes is deployed on the cloud services. The Cloud-controller-manager connects the Kubernetes cluster to the cloud provider API to achieve cloud functionalities. You should note that this component only runs controllers that are specific to your cloud provider. If Kubernetes is deployed on on-premises servers, no instances of this component are run. Each controller is a separate process, but they are all compiled into a single binary and running as a single process to reduce complexity.
46 |
47 | > For high availability, run at least two instances of Cloud-controller-manager on different servers.
48 |
49 | ## Worker nodes:
50 |
51 | Worker nodes that were formerly called Minions are one of the most important parts of the Kubernetes cluster. They are responsible for running containers. Kubernetes supports various container runtimes and can work with multiple container runtimes at the same time. Each cluster should have at least one worker node to run application containers.
52 |
53 | > For high availability scenarios, at least three worker nodes are recommended.
54 |
55 | ### kubelet:
56 |
57 | The kubelet is a most sensitive component in the Kubernetes ecosystem that is responsible for running containers managed by the Kubernetes. This component from one side connects to the Kubernetes API server and from the other side connects to the Container Runtime. It takes Kubernetes PodSpec and ensures that the containers are described in those PodSpec are running and healthy. All other containers that are not created by the Kubernetes are not managed with the kubelet. The kubelet speaks to Container Runtimes through the CRI, Container Runtime Interface. The CRI is a plugin that enables kubelet to use a wide variety of container runtimes without the need to recompile.
58 |
59 | ### kube-proxy:
60 |
61 | This component is a network proxy that implementing part of the Kubernetes Service concept. Network rules on each node are managed by the Kube-proxy. These network rules allow communication with pods from inside or outside of the cluster. If the node operating system has a packet filtering layer, like Netfilter, it uses that layer. Otherwise, All traffic is routed through the Kube-proxy, and the Kube-proxy is directly responsible for managing and forwarding them to proper destinations.
62 |
63 | ### Container Runtime:
64 |
65 | The Container Runtime is the software that is responsible for running containers. Running the container is not really the function of the Kubernetes - It's a Container Orchestration Engine - and it has not implemented the Container Runtime for itself. Instead, it uses the existing Container Runtimes like Docker, Containerd, CRI-O, etc. A variety of container runtimes can be used by Kubernetes through the Kubelet CRI plugin. Because of the CRI plugin, Kubernetes can use multiple Container Runtimes at the same time.
66 |
--------------------------------------------------------------------------------
/contents/concepts/manifests/README.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Manifests
2 |
3 | Kubernetes manifests are specifications of the Kubernetes objects that are represented in YAML or JSON format. It's so typical to write manifest in YAML format, and because of that, we intend to introduce the YAML syntax of the Kubernetes manifests.
4 |
5 |
6 |
7 |
8 |
9 | Each object has three main fields, **apiVersion**, **kind**, **metadata**. Most of them, especially all workloads, have **spec** and **status** fields.
10 |
11 | - **apiVersion**: Points to the API version that exists in your Kubernetes cluster and has the desired resource.
12 | - **kind**: Specifies the wanted Kubernetes resource that exists in the selected API version.
13 | - **metadata**: An instance of the ObjectMeta dictionary that contains the object specifications.
14 | - **spec**: It contains the actual specifications of the object. Each Kubernetes resource has its own spec.
15 | - **status**: The current status of the object. This field is read-only, and the Kubernetes core can only update that.
16 |
17 | # ObjectMeta metadata
18 |
19 | Each Kubernetes object that is related to a persisted resource must have ObjectMeta metadata. It consists of all metadata that is related to the entire object. For example, the object **uid**, **name**, **labels**, **annotations**, **namespace**, etc. You should note that the ObjectMeta that is specified in the **metadata** field of the manifest is a mandatory field, and it should be written for every object.
20 |
21 | Here is the list of the ObjectMeta fields:
22 |
23 | - **name** (Required): Specifies the name of the object. It should be assigned during resource creation and must be unique within the namespace. After object creation, it can't be changed anymore.
24 |
25 | - **labels** (Optional): It's a dictionary of key-value pairs and is used to organize and categorize objects. Labels are one of the most important parts of the Kubernetes objects because they are related to object selectors that are used to identify members of specific categories. They can be queried by the Kubernetes system and the user.
26 |
27 | - **annotations** (Optional): It's a dictionary of unstructured key-value pairs that are used to adding extra info to the object. Annotations are usually used by third-party components and complex systems. They are not queryable.
28 |
29 | - **uid** (Required): The UID is a unique identifier that is assigned to the object by the Kubernetes itself. It's a read-only field and should not be assigned directly by the user. After resource creation, it can't be changed.
30 |
31 | - **namespace** (Optional): This field represents the namespace that the object must be created on that. After creating the object, it cannot be changed. If it's not assigned during the creation of the object, it points to the **default** namespace.
32 |
33 | - **clusterName** (Optional): In multi-cluster environments, it points to the cluster that the object belongs to that. Currently, Kubernetes is not using this field and ignores that throughout resource creation or updating.
34 |
--------------------------------------------------------------------------------
/contents/concepts/resources/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/concepts/resources/README.md
--------------------------------------------------------------------------------
/contents/concepts/resources/authz/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/concepts/resources/authz/README.md
--------------------------------------------------------------------------------
/contents/concepts/resources/authz/clusterrole.md:
--------------------------------------------------------------------------------
1 | # Kubernetes ClusterRole
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/authz/clusterrolebinding.md:
--------------------------------------------------------------------------------
1 | # Kubernetes ClusterRoleBinding
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/authz/role.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Role
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/authz/rolebinding.md:
--------------------------------------------------------------------------------
1 | # Kubernetes RoleBinding
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/authz/serviceaccount.md:
--------------------------------------------------------------------------------
1 | # Kubernetes ServiceAccount
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/cluster/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/concepts/resources/cluster/README.md
--------------------------------------------------------------------------------
/contents/concepts/resources/cluster/namespace.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Namespace
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/cluster/node.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Node
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/scaling/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/concepts/resources/scaling/README.md
--------------------------------------------------------------------------------
/contents/concepts/resources/scaling/horizontalpodautoscaler.md:
--------------------------------------------------------------------------------
1 | # Kubernetes HorizontalPodAutoscaler
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/scaling/poddisruptionbudget.md:
--------------------------------------------------------------------------------
1 | # Kubernetes PodDisruptionBudget
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/scaling/verticalpodautoscaler.md:
--------------------------------------------------------------------------------
1 | # Kubernetes VerticalPodAutoscaler
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/security/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/concepts/resources/security/README.md
--------------------------------------------------------------------------------
/contents/concepts/resources/security/certificatesigningrequest.md:
--------------------------------------------------------------------------------
1 | # Kubernetes CertificateSigningRequest
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/security/limitrange.md:
--------------------------------------------------------------------------------
1 | # Kubernetes LimitRange
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/security/networkpolicy.md:
--------------------------------------------------------------------------------
1 | # Kubernetes NetworkPolicy
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/security/podsecuritypolicy.md:
--------------------------------------------------------------------------------
1 | # Kubernetes PodSecurityPolicy
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/security/resourcequota.md:
--------------------------------------------------------------------------------
1 | # Kubernetes ResourceQuota
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/service/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/concepts/resources/service/README.md
--------------------------------------------------------------------------------
/contents/concepts/resources/service/endpoints.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Endpoints
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/service/endpointslice.md:
--------------------------------------------------------------------------------
1 | # Kubernetes EndpointSlice
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/service/ingress.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Ingress
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/service/service.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Service
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/storage/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/concepts/resources/storage/README.md
--------------------------------------------------------------------------------
/contents/concepts/resources/storage/configmap.md:
--------------------------------------------------------------------------------
1 | # Kubernetes ConfigMap
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/storage/persistentvolume.md:
--------------------------------------------------------------------------------
1 | # Kubernetes PersistentVolume
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/storage/persistentvolumeclaim.md:
--------------------------------------------------------------------------------
1 | # Kubernetes PersistentVolumeClaim
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/storage/secret.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Secret
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/storage/storageclass.md:
--------------------------------------------------------------------------------
1 | # Kubernetes StorageClass
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/workloads/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/concepts/resources/workloads/README.md
--------------------------------------------------------------------------------
/contents/concepts/resources/workloads/cronjob.md:
--------------------------------------------------------------------------------
1 | # Kubernetes CronJob
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/workloads/daemonset.md:
--------------------------------------------------------------------------------
1 | # Kubernetes DaemonSet
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/workloads/deployment.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Deployment
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/workloads/job.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Job
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/workloads/pods.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Pods
2 |
3 | A Pod is an atomic ( which means this is the smallest unit ) unit of work in the Kubernetes. In Kubernetes, you manage Pods instead of containers. Each Pod contains one or more containers. The containers that are running in a pod are shared in the network, storage, and lifecycle, and they are all run on the same node. In most cases, above 90%, the one-container-per-pod model is used, and you can think a Pod is a wrapper around the actual container. The multi-container per Pod has advanced use cases, and it's usually used in complex applications.
4 |
5 | Pods are ephemeral resources in the Kubernetes. They haven't a self-healing mechanism, and when they are stopped and started again, for any reason, all data that exist in them are removed. If you want to keep your data, you should use persistent storage. Another note that you should consider is when the Pod is stopped and started again, the IP address of it may changes. The Service resource is used to discover pods and enables communicating with them by a persistent IP address and DNS name.
6 |
7 | Stopping and starting a pod causes the system to reschedule a new pod. Because of that, the concerns explained above happen.
8 |
9 | Because Pods do not have any self-healing mechanism, we rarely create them directly. Instead, we use Controllers like Deployment, ReplicaSet, DaemonSet, etc., that they create and manage Pods for us. These controllers provide various mechanisms like self-healing, high availability, upgrading, etc. For example, when a node that hosts the pod is failed, the controller tells the system to reschedule a new instance of the pod to run on a healthy node. See more information at Workloads topics.
10 |
11 |
12 |
13 |
14 |
15 | - **Pod 1**: This is a one-container-per-pod model. In most cases, we use this model.
16 | - **Pod 2**: This is a one-container-per-pod model in conjunction with a storage volume.
17 | - **Pod 3**: In this Pod, two containers are running, and the network and lifecycle of them are shared together.
18 | - **Pod 4**: In this Pod, two containers are running, and the network, storage, and lifecycle of them are shared together.
19 | - **Pod 5**: This example is like the previous one but on a larger scale.
20 |
21 | # Example
22 |
23 | Here is a brief example of Pod manifest:
24 |
25 | ```yaml
26 | apiVersion: v1
27 | kind: Pod
28 | metadata:
29 | name: test
30 | labels:
31 | app.kubernetes.io/name: test
32 | app.kubernetes.io/created-by: kubernetes-complete-reference
33 | spec:
34 | containers:
35 | - name: test
36 | image: alpine:latest
37 | command: ["echo", "Hello World!"]
38 | restartPolicy: Never
39 | ```
40 |
--------------------------------------------------------------------------------
/contents/concepts/resources/workloads/replicaset.md:
--------------------------------------------------------------------------------
1 | # Kubernetes ReplicaSet
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/concepts/resources/workloads/replicationcontroller.md:
--------------------------------------------------------------------------------
1 | # Kubernetes ReplicationController
2 |
3 | As was said in the Pods section, Pods are **ephemeral** resources that they haven't any **self-healing** mechanism. One of our expectations is the high availability of the Pods. Furthermore, in many scenarios, we want to deploy several instances of our applications. The ReplicationController resource is one of the well-known Kubernetes resources that is used to achieve those things. With ReplicationController, we can achieve **self-healing**, **scaling**, and **desired state** for our applications.
4 |
5 | The ReplicationController is watching for any changes in the selected Pods, and it's responsible for making them available based on the desired state that is considered by the user. Three important things should be described in its manifest, the **replicas**, **selector**, and **template**. All Pods that are selected by the ReplicationController are controlled directly with that, and they work as a child of their ReplicationController object. Let's describe the ReplicationController manifest fields that are introduced above:
6 |
7 | - **replicas**: It's a numeric value that shows the desired state. The ReplicationController makes sure that the instance of the running Pods which are selected based on the **selector** field is equal to this number.
8 |
9 | - **selector**: It's a key-value dictionary that the ReplicationController uses to find Pods. The desired state is achieved based on this field. ReplicationController counts the Pods that their Labels are matched to this field and determines the current state.
10 |
11 | - **template**: It contains PodSpec, the specification of the pod. The desired state is achieved by creating new pods that are based on this specification. Please note that the labels of the pod that specify in this field should be the same as the labels that are specified in the **selector** field. The manifest of this field is the same as the Pod manifest.
12 |
13 | # Example
14 |
15 | Here is an example of the ReplicationController manifest:
16 |
17 | ```yaml
18 | apiVersion: v1
19 | kind: ReplicationController
20 | metadata:
21 | name: nginx-rc
22 | labels:
23 | app.kubernetes.io/name: nginx
24 | app.kubernetes.io/resource: rc
25 | app.kubernetes.io/part-of: kubernetes-complete-reference
26 | app.kubernetes.io/created-by: ssbostan
27 | spec:
28 | replicas: 3
29 | selector:
30 | app.kubernetes.io/name: nginx
31 | app.kubernetes.io/resource: pod
32 | app.kubernetes.io/part-of: kubernetes-complete-reference
33 | app.kubernetes.io/created-by: ssbostan
34 | template:
35 | metadata:
36 | labels:
37 | app.kubernetes.io/name: nginx
38 | app.kubernetes.io/resource: pod
39 | app.kubernetes.io/part-of: kubernetes-complete-reference
40 | app.kubernetes.io/created-by: ssbostan
41 | spec:
42 | restartPolicy: Always
43 | containers:
44 | - name: nginx
45 | image: nginx:latest
46 | ports:
47 | - containerPort: 80
48 | ```
49 |
--------------------------------------------------------------------------------
/contents/concepts/resources/workloads/statefulset.md:
--------------------------------------------------------------------------------
1 | # Kubernetes StatefulSet
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/examples/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/examples/README.md
--------------------------------------------------------------------------------
/contents/practices/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/practices/README.md
--------------------------------------------------------------------------------
/contents/tools/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/tools/README.md
--------------------------------------------------------------------------------
/contents/tools/installation/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/tools/installation/README.md
--------------------------------------------------------------------------------
/contents/tools/installation/charmed-kubernetes.md:
--------------------------------------------------------------------------------
1 | # Charmed Kubernetes (Ubuntu Juju)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/k3d.md:
--------------------------------------------------------------------------------
1 | # K3d (Rancher K3s in Docker)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/k3s.md:
--------------------------------------------------------------------------------
1 | # K3s (Rancher Lightweight Kubernetes)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/kind.md:
--------------------------------------------------------------------------------
1 | # KinD (Kubernetes in Docker)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/kops.md:
--------------------------------------------------------------------------------
1 | # Kops (Kubernetes Operations)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/kubeadm.md:
--------------------------------------------------------------------------------
1 | # Kubeadm (Official Installation Tool)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/kubekey.md:
--------------------------------------------------------------------------------
1 | # KubeKey (KubeSphere Installer)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/kubeone.md:
--------------------------------------------------------------------------------
1 | # KubeOne (Kubermatic Installer)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/kubermatic.md:
--------------------------------------------------------------------------------
1 | # Kubermatic (Central Kubernetes Management Platform)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/kubesphere.md:
--------------------------------------------------------------------------------
1 | # KubeSphere (Distributed Kubernetes Platform)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/kubespray.md:
--------------------------------------------------------------------------------
1 | # Kubespray (Ansible-based Installer)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/microk8s.md:
--------------------------------------------------------------------------------
1 | # MicroK8s (Canonical Zero-ops Kubernetes)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/minikube.md:
--------------------------------------------------------------------------------
1 | # minikube (Local Kubernetes cluster)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tools/installation/rke.md:
--------------------------------------------------------------------------------
1 | # RKE (Rancher Kubernetes Engine)
2 |
3 | To be completed.
4 |
--------------------------------------------------------------------------------
/contents/tutorials/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ahmadalibagheri/kubernetes-complete-reference/ad731c68ddf890990d8f4bdc40651a25532fe086/contents/tutorials/README.md
--------------------------------------------------------------------------------