K8s 详解(一) K8s 架构和常用命令


作者:Linux猿

简介:CSDN博客专家,华为云享专家,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

欢迎小伙伴们点赞、收藏⭐、留言


本文主要介绍 K8s 的简介、架构以及常用命令。

一、K8s 起源

Kubernetes ( 简称为 K8s )最开始是由 Google 的工程师设计开发的。Google 作为 Linux 容器技术的早期贡献者之一,曾公开演讲介绍 Google 如何将一切都运行于容器之中。Google 一周内的容器部署超过 20 亿次,全部的工作都由内部平台 Borg 支撑。Borg 是 Kubernetes 的前身,几年来开发 Borg 的经验教训也成了影响 Kubernetes 中许多技术的主要因素。

二、简介

Kubernetes,简称 k8s(k,8个字符,s的组合)或者 “kube”,是一个开源的 Linux 容器自动化运维平台,它消除了容器化应用程序在部署、伸缩时涉及到的许多手动操作。换句话说,你可以将多台主机组合成集群来运行 Linux 容器,而 Kubernetes 可以帮助你简单高效地管理那些集群。构成这些集群的主机还可以跨越公有云、私有云以及混合云。

三、K8s 架构

K8s 详解(一) K8s 架构和常用命令_第1张图片 图1 K8s 架构

各个组件的功能如下所示。

3.1 主节点 master 组件

(1)API Server

集群统一入口,各组件的协调者,提供认证、授权、访问控制、API注册和发现等机制,以 RESTful API 的方式提供接口服务,所有对象资源的增删改查和监听都由 API Server 处理后提交给 Etcd 存储。所有模块之前并不会之间互相调用,而是通过和 API Server 打交道来完成自己那部分的工作。

(2)Etcd

分布式键值存储系统集群,用于保存集群状态数据,如:Pod、Service 等资源对象信息。

另外,Etcd 有一个特性,可以调用它的 API 监听其中的数据,一旦数据发生变化,就会收到通知。有了这个特性之后,K8s 中的每个组件只需要监听 Etcd 中数据,就可以知道自己应该做什么。

(3)Scheduler

负责对集群内部的资源进行调度,相当于调度员的角色,按照预定的调度策略将 Pod 调度到相应的机器上,调度程序根据调度算法为新创建的 Pod 选择一个 Node 节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。

(4)Controller Manager

Controller Manager 是 K8s 的管理控制中心,控制器和资源一一对应,负责集群内 Node、Namespace、Service、Token、Replication 等资源对象的管理,使集群内的资源对象维持在预期的工作状态。每一个 controller 通过 api-server 提供的 restful 接口实时监控集群内每个资源对象的状态,当发生故障,导致资源对象的工作状态发生变化,就进行干预,尝试将资源对象从当前状态恢复为预期的工作状态,常见的 controller 有 Namespace Controller、Node Controller、Service Controller、ServiceAccount Controller、Token Controller、ResourceQuote Controller、Replication Controller等。

(5)kubectl

通过 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。

3.2 节点 node 组件

(1)Node

Node 是 K8s 集群中的节点,一个 Node 节点对应一台物理机或虚拟机,一个 Node 节点可以运行多个 Pod。

(2)Kubelet

运行在每个计算节点上。通过 API Server 提供的接口监测到 Scheduler 产生的 Pod 绑定事件,然后从 Etcd 获取 Pod 清单,下载镜像并启动容器。同时监视分配给该 节点的 Pods,周期性获取容器状态,再通过 API Server 通知各个组件。

(3)kube-proxy

网络代理程序,在 Node 节点上实现 Pod 网络代理,负责为 Service 提供 Cluster 内部的服务发现、网络规划和负载均衡。

(4)Pod

Pod 是 K8s 最小的操作单元。一个 Pod 代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。

(5)Container

Container 表示容器,是镜像运行后的实例。

四、常用命令

执行 K8s 命令都是通过 kubectl 工具进行的。

4.1 Node 节点相关命令

(1)查看集群中所有节点

[node@k8s-master ~]$ kubectl get nodes
NAME         STATUS    AGE
k8s-node-1   Ready     50d
k8s-node-2   Ready     50d
[node@k8s-master ~]$

如上所示,K8s 集群中有两个节点 k8s-node-1 和 k8s-node-2。 

(2)查看节点的详细信息

[node@k8s-master ~]$ kubectl get nodes -o wide
NAME         STATUS    AGE       EXTERNAL-IP
k8s-node-1   Ready     50d       
k8s-node-2   Ready     50d       
[node@k8s-master ~]$

(3)删除指定节点

[node@k8s-master ~]$ kubectl delete node k8s-node-1
node "k8s-node-1" deleted
[node@k8s-master ~]$

4.2 Pod 相关命令

(1)列出 Pod 信息

[node@k8s-master demployment]$ kubectl get pods
NAME                    READY   STATUS    RESTARTS   AGE
myapp-6587ffc4b-6t4k4   1/1     Running   0          3m3s
myapp-6587ffc4b-dj887   1/1     Running   0          3m2s
myapp-6587ffc4b-j2jw5   1/1     Running   0          3m3s
myapp-6587ffc4b-p72wn   1/1     Running   0          3m3s
myapp-6587ffc4b-qv4qd   1/1     Running   0          3m2s
myapp-6587ffc4b-wnqmc   1/1     Running   0          3m2s
[node@k8s-master demployment]$

(2)列出 Pod 详细信息

[node@k8s-master demployment]$ kubectl get pods -o wide
NAME                    READY   STATUS    RESTARTS   AGE     IP               NODE         NOMINATED NODE   READINESS GATES
myapp-6587ffc4b-6t4k4   1/1     Running   0          3m45s   10.244.109.71    k8s-node-1              
myapp-6587ffc4b-dj887   1/1     Running   0          3m44s   10.244.109.68    k8s-node-1              
myapp-6587ffc4b-j2jw5   1/1     Running   0          3m45s   10.244.109.70    k8s-node-1              
myapp-6587ffc4b-p72wn   1/1     Running   0          3m45s   10.244.235.193   k8s-master              
myapp-6587ffc4b-qv4qd   1/1     Running   0          3m44s   10.244.235.194   k8s-master              
myapp-6587ffc4b-wnqmc   1/1     Running   0          3m44s   10.244.109.69    k8s-node-1              
[node@k8s-master demployment]$

(3)删除指定 Pod

[node@k8s-master demployment]$ kubectl delete pod myapp-6587ffc4b-6t4k4
pod "myapp-6587ffc4b-6t4k4" deleted
[node@k8s-master demployment]$

五、下期预告

下一篇文章将介绍 K8s 的命名空间,敬请期待!

参考链接:

https://www.cnblogs.com/renshengdezheli/p/16686769.html

k8s介绍及部署方式_k8s部署方式_南城诗客^的博客-CSDN博客

https://www.cnblogs.com/yjf512/p/11187064.html

K8s - Kubernetes重要概念介绍(Cluster、Master、Node、Pod、Controller、Service、Namespace)

云原生架构之【Kubernetes(K8s)】第一部分:技术评估 - 简书


感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言,感谢大家的一路支持!猿哥将持续输出「优质文章回馈大家!


你可能感兴趣的:(微服务/K8s/Docker,kubernetes,容器,云原生,K8s,K8s,架构,kube)