diff --git a/Containerization & Orchestration/kubernetes/1-Information.md b/Containerization & Orchestration/kubernetes/1-Information.md new file mode 100755 index 0000000..aca5679 --- /dev/null +++ b/Containerization & Orchestration/kubernetes/1-Information.md @@ -0,0 +1,65 @@ +# Kubernetes (K8s) Documentation + +## Overview +**Kubernetes (K8s)** is an open-source container orchestration platform designed to automate the deployment, scaling, and operation of containerized applications. + +--- + +## Control Plane (CP) +The **Control Plane** is the core management component of a Kubernetes cluster. It makes global decisions about the cluster (e.g., scheduling), and it maintains the desired state of the cluster by managing workloads and directing communication within the system. +> **Note:** By default, the Control Plane does not directly manage or run application containers. + +### Key Components of the Control Plane: +- **API Server (`kube-apiserver`)**: + Exposes the Kubernetes API and serves as the entry point to the cluster. It handles communication between internal components and external clients. + +- **Scheduler (`kube-scheduler`)**: + Assigns work (e.g., pods) to nodes based on resource availability and policies. + +- **Controller Manager (`kube-controller-manager`)**: + Runs controllers that regulate the state of the cluster (e.g., Node Controller, Replication Controller, etc.). + +- **etcd**: + A consistent, highly-available key-value store that stores all cluster data, configurations, and states. This is the "database" of Kubernetes. + +--- + +## Worker Nodes +Worker nodes are the machines where containerized applications run. Each worker node contains essential components for managing containers. + +### Key Components of a Worker Node: +- **Kubelet**: + An agent that ensures containers are running as specified in their Pod definitions. It communicates with the Control Plane to receive and execute tasks. + +- **Kube Proxy**: + Maintains network rules and handles routing for communication between services within the cluster and with external traffic. + +--- + +## Data Flow +- **Kubelet** and **Kube Proxy** on each worker node communicate with the **API Server** in the Control Plane for task execution and resource updates. +- The **Scheduler** assigns pods to nodes based on resource requirements, while the **Controller Manager** ensures that the cluster state remains consistent. + +--- + +## Administration Tools +- **`kubeadm`**: + A tool for bootstrapping Kubernetes clusters. It simplifies the setup and configuration of the Control Plane and worker nodes. + +- **`kubectl`**: + The command-line interface (CLI) for interacting with the Kubernetes API. It is used to manage resources, deploy applications, and inspect cluster components. + +--- + +## Kubernetes Version Compatibility +### Kubernetes and Container Runtimes: +- **Kubernetes ≤ 1.23**: + Compatible with Docker as the default container runtime. + +- **Kubernetes 1.24 to 1.25**: + Docker is not supported as a runtime. These versions require `containerd` or another Container Runtime Interface (CRI) implementation. + +- **Kubernetes ≥ 1.25**: + Docker can be installed on the server but must be used indirectly through `containerd` or another CRI-compliant runtime. Docker itself is not a supported runtime. + + diff --git a/Containerization & Orchestration/kubernetes/instaltion.md b/Containerization & Orchestration/kubernetes/2-Installtion.md similarity index 100% rename from Containerization & Orchestration/kubernetes/instaltion.md rename to Containerization & Orchestration/kubernetes/2-Installtion.md diff --git a/Containerization & Orchestration/kubernetes/commands.md b/Containerization & Orchestration/kubernetes/3-Commands.md similarity index 100% rename from Containerization & Orchestration/kubernetes/commands.md rename to Containerization & Orchestration/kubernetes/3-Commands.md diff --git a/Containerization & Orchestration/kubernetes/information.md b/Containerization & Orchestration/kubernetes/information.md deleted file mode 100755 index 4401693..0000000 --- a/Containerization & Orchestration/kubernetes/information.md +++ /dev/null @@ -1,25 +0,0 @@ -# Kubernetes (Kuber) Documentation - -## Control Plane (CP) -- **CP (Control Plane)**: The central management entity of the Kubernetes cluster. -- By default, the manager in Kubernetes does not directly handle any containers. - -## Kubernetes Manager Components -- **Control Manager** -- **Scheduler** -- **API Server** -- **etcd (Database)** -- **Kubelet** - -## Kubernetes Worker Components -- **Kube Proxy** -- **Kubelet** - -## Data Flow -- **Kube Proxy** and **Kubelet** communicate with the Kubernetes Manager for data handling. - -## Administration Tools -- **kubeadm**: Used for administration commands. -- **kubectl**: Used to manage nodes and services. - ---- diff --git a/Monitoring & Logging/Grafana/Install-Grafana-Prometheus.md b/Monitoring & Logging/Grafana/Install-Grafana-Prometheus.md deleted file mode 100755 index 3ca8f16..0000000 --- a/Monitoring & Logging/Grafana/Install-Grafana-Prometheus.md +++ /dev/null @@ -1,93 +0,0 @@ -# Installing Grafana Prometheus - -# Installing Grafana on Ubuntu with apt - -Installing Grafana on Ubuntu is a relatively simple process. The following steps will guide you through the installation process. - -## Prerequisites - -Before you begin, you will need to have a working Ubuntu system with apt installed. - -## Step 1: Add the Grafana repository - -Add the Grafana repository to your system by running the following command: - -``` -sudo apt-get install apt-transport-https -sudo apt-get install software-properties-common wget -wget -q -O - | sudo apt-key add - -sudo add-apt-repository "deb stable main" - -``` - -## Step 2: Install Grafana - -Once the repository is added, you can install Grafana with the following command: - -``` -sudo apt-get update -sudo apt-get install grafana - -``` - -## Step 3: Start Grafana - -Once the installation is complete, start the Grafana server with the following command: - -``` -sudo service grafana-server start - -``` - -## Step 4: Access the Grafana Dashboard - -Once the server is started, you can access the Grafana dashboard by browsing to [http://localhost:3000](http://localhost:3000/) in your web browser. The default username and password are both `admin`. - -## Conclusion - -You have now successfully installed Grafana on your Ubuntu system using apt. You can now start using Grafana to monitor and visualize your data. - -# Installing Prometheus on Ubuntu - -Installing Prometheus on Ubuntu is a relatively simple process. The following steps will guide you through the installation process. - -## Prerequisites - -Before you begin, you will need to have a working Ubuntu system with apt installed. - -## Step 1: Add the Prometheus repository - -Add the Prometheus repository to your system by running the following command: - -``` -sudo apt-get install apt-transport-https -echo "deb stable main" | sudo tee -a /etc/apt/sources.list.d/prometheus.list - -``` - -## Step 2: Install Prometheus - -Once the repository is added, you can install Prometheus with the following command: - -``` -sudo apt-get update -sudo apt-get install prometheus - -``` - -## Step 3: Start Prometheus - -Once the installation is complete, start the Prometheus server with the following command: - -``` -sudo service prometheus start - -``` - -## Step 4: Access the Prometheus Dashboard - -Once the server is started, you can access the Prometheus dashboard by browsing to [http://localhost:9090](http://localhost:9090/) in your web browser. - -## Conclusion - -You have now successfully installed Prometheus on your Ubuntu system using apt. You can now start using Prometheus to monitor and visualize your data. diff --git a/Monitoring & Logging/Grafana/Install-Inflx.md b/Monitoring & Logging/Grafana/Install-Inflx.md deleted file mode 100755 index 2b03a2f..0000000 --- a/Monitoring & Logging/Grafana/Install-Inflx.md +++ /dev/null @@ -1,70 +0,0 @@ -# Install Influx And SNMP - -## Installing Influx On Ubuntu - -Influx is an open source time series database that can be used to store and analyze time series data. It is written in Go and runs on Linux, macOS, and Windows machines. Installing Influx on Ubuntu is a straightforward process. - -### Prerequisites - -Before you install Influx, you must make sure you have the following prerequisites: - -- A supported version of Ubuntu, such as Ubuntu 18.04 or later -- A working internet connection -- A user account with sudo privileges - -### Downloading Influx - -To download Influx, open a terminal window and use the following command: - -``` -wget - -``` - -### Installing Influx - -Now that you have downloaded the Influx package, you can install it with these commands: - -``` -sudo dpkg -i influxdb_1.8.2_amd64.deb -sudo systemctl enable influxdb -sudo systemctl start influxdb - -``` - -### Testing Influx - -You can test that Influx is working properly by running the following command: - -``` -curl -G --data-urlencode "q=SHOW DATABASES" - -``` - -The output should look like this: - -``` -{ - "results": [ - { - "statement_id": 0, - "series": [ - { - "name": "databases", - "columns": [ - "name" - ], - "values": [ - [ - "_internal" - ] - ] - } - ] - } - ] -} - -``` - -If you get this output, then you have successfully installed Influx on your Ubuntu machine. diff --git a/Monitoring & Logging/Grafana/introduction.md b/Monitoring & Logging/Grafana/introduction.md deleted file mode 100755 index e8a3095..0000000 --- a/Monitoring & Logging/Grafana/introduction.md +++ /dev/null @@ -1,17 +0,0 @@ - -# Grafana - -Grafana is an open source analytics and monitoring platform designed to help users visualize, analyze, and explore their data. It is used to create beautiful and interactive dashboards, as well as to monitor and alert users to changes in their data. Grafana supports a wide variety of data sources, including Prometheus, MySQL, Postgres, and InfluxDB. It is highly customizable, allowing users to create custom dashboards and alerting rules. Grafana is easy to use and can be easily integrated with other tools and services. It is also highly secure, with authentication and authorization features to ensure data is only visible to authorized users. Grafana is used by businesses and organizations of all sizes, from small startups to large enterprises. - -## What is Prometheus? - -Prometheus is an open source monitoring system and time-series database. It is used for collecting metrics from various sources, such as servers, containers, and services. Prometheus provides a wide range of features, including alerting, graphing, and visualization. It is designed to be highly reliable, scalable, and easy to use. Prometheus can be used to monitor applications and services, as well as infrastructure, such as servers, containers, and networks. It is also highly extensible, allowing users to add custom metrics and dashboards. Prometheus is used by businesses and organizations of all sizes, from small startups to large enterprises. - -## What is SNMP Protocol? - -Simple Network Management Protocol (SNMP) is an Internet-standard protocol for managing devices on IP networks. It allows network administrators to query devices for various information and to modify certain settings within the devices. SNMP is widely used for network monitoring, network management, performance monitoring, and configuration management. It is typically used in large networks to keep track of all the devices connected to the network, such as routers, switches, and servers. SNMP is designed to provide a common way for network devices to communicate and exchange information with network management systems. SNMP is a lightweight protocol, making it ideal for small networks and low-bandwidth devices. It has a wide range of features, including the ability to configure devices remotely, monitor performance metrics, and monitor network connections. SNMP is also secure, with authentication and encryption features to ensure that data is only visible to authorized users. - -## What is InfluxDB? - -InfluxDB is an open source time-series database. It is designed to store and process large amounts of time-series data, such as application metrics, system metrics, and sensor data. InfluxDB is highly scalable and can easily store and process millions of data points per second. It is also easy to use, with a simple SQL-like query language and support for a wide variety of data sources. InfluxDB is highly secure, with authentication and authorization features to ensure that data is only visible to authorized users. It is used by businesses and organizations of all sizes, from small startups to large enterprises. -