k8s常用简单操作命令

K8s 架构原理是什么?

https://www.redhat.com/zh/topics/containers/kubernetes-architecture

K8s 集群的神经中枢:控制平面

让我们从 Kubernetes 集群的神经中枢(即控制平面)开始说起。在这里,我们可以找到用于控制集群的 Kubernetes 组件以及一些有关集群状态和配置的数据。这些核心 Kubernetes 组件负责处理重要的工作,以确保容器以足够的数量和所需的资源运行。 

控制平面会一直与您的计算机保持联系。集群已被配置为以特定的方式运行,而控制平面要做的就是确保万无一失。

K8s 集群API: kube-apiserver

如果需要与您的 Kubernetes 集群进行交互,就要通过 API。Kubernetes API 是 Kubernetes 控制平面的前端,用于处理内部和外部请求。API 服务器会确定请求是否有效,如果有效,则对其进行处理。您可以通过 REST 调用、kubectl 命令行界面或其他命令行工具(例如 kubeadm)来访问 API。

K8s 调度程序:kube-scheduler

您的集群是否状况良好?如果需要新的容器,要将它们放在哪里?这些是 Kubernetes 调度程序所要关注的问题。

调度程序会考虑容器集的资源需求(例如 CPU 或内存)以及集群的运行状况。随后,它会将容器集安排到适当的计算节点。

K8s 控制器:kube-controller-manager

控制器负责实际运行集群,而 Kubernetes 控制器管理器则是将多个控制器功能合而为一。控制器用于查询调度程序,并确保有正确数量的容器集在运行。如果有容器集停止运行,另一个控制器会发现并做出响应。控制器会将服务连接至容器集,以便让请求前往正确的端点。还有一些控制器用于创建帐户和 API 访问令牌。

键值存储数据库 etcd

配置数据以及有关集群状态的信息位于 etcd(一个键值存储数据库)中。etcd 采用分布式、容错设计,被视为集群的最终事实来源。

Kubernetes 节点中会发生什么?

K8s 节点

Kubernetes 集群中至少需要一个计算节点,但通常会有多个计算节点。容器集经过调度和编排后,就会在节点上运行。如果需要扩展集群的容量,那就要添加更多的节点。

容器集

容器集是 Kubernetes 对象模型中最小、最简单的单元。它代表了应用的单个实例。每个容器集都由一个容器(或一系列紧密耦合的容器)以及若干控制容器运行方式的选件组成。容器集可以连接至持久存储,以运行有状态应用。

容器运行时引擎

为了运行容器,每个计算节点都有一个容器运行时引擎。比如 Docker,但 Kubernetes 也支持其他符合开源容器运动(OCI)标准的运行时,例如 rkt 和 CRI-O。

kubelet

每个计算节点中都包含一个 kubelet,这是一个与控制平面通信的微型应用。kublet 可确保容器在容器集内运行。当控制平面需要在节点中执行某个操作时,kubelet 就会执行该操作。

kube-proxy

每个计算节点中还包含 kube-proxy,这是一个用于优化 Kubernetes 网络服务的网络代理。kube-proxy 负责处理集群内部或外部的网络通信——靠操作系统的数据包过滤层,或者自行转发流量。 

创建资源

$ kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1

快速创建资源

kubectl run --image=nginx:alpine nginx-app --port=8180

获取资源列表

kubectl get pods

查看详细信息

kubectl describe pods pod-name

进入容器

kubectl exec -it pod-name /bin/bash

查看日志

kubectl logs pod-name

给资源打标签

kubectl label pod $POD_NAME app=v1

删除资源

kubectl delete service -l run=kubernetes-bootcamp

重启pod

kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -

查看节点标签

kubectl get nodes --show-labels 

添加节点标签

kubectl label nodes node01 disktype=ssd

删除节点标签

kubectl label nodes  -

修改节点标签

kubectl label nodes  = --overwrite

你可能感兴趣的:(k8s学习笔记,其他杂谈,kubernetes,云原生,docker)