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

这篇具有很好参考价值的文章主要介绍了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 架构和常用命令,微服务/K8s/Docker,kubernetes,容器,云原生,K8s,K8s 架构,kube
图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       <none>
k8s-node-2   Ready     50d       <none>
[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   <none>           <none>
myapp-6587ffc4b-dj887   1/1     Running   0          3m44s   10.244.109.68    k8s-node-1   <none>           <none>
myapp-6587ffc4b-j2jw5   1/1     Running   0          3m45s   10.244.109.70    k8s-node-1   <none>           <none>
myapp-6587ffc4b-p72wn   1/1     Running   0          3m45s   10.244.235.193   k8s-master   <none>           <none>
myapp-6587ffc4b-qv4qd   1/1     Running   0          3m44s   10.244.235.194   k8s-master   <none>           <none>
myapp-6587ffc4b-wnqmc   1/1     Running   0          3m44s   10.244.109.69    k8s-node-1   <none>           <none>
[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)】第一部分:技术评估 - 简书


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞文章来源地址https://www.toymoban.com/news/detail-611663.html


到了这里,关于K8s 详解(一) K8s 架构和常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes(k8s) 架构原理一文详解

    目录 一、k8s 概述 1.什么是k8s? 2.特性 3.主要功能 三、集群架构与组件 1.Master 组件 (1)Kube-apiserver (2)Kube-controller-manager (3)Kube-scheduler 2.配置存储中心 3.Node 组件 (1)Kubelet (2)Kube-Proxy (3)docker 或 rocket 四、k8s的工作流程 五、k8s的资源对象 1.Pod 2.Pod 控制器 2.Label 3

    2024年02月09日
    浏览(44)
  • 四、Kubernetes(k8s) 工作中的常用命令

    顾名思义, Namespace 是命名空间的意思,在 Kubernetes 中,“命名空间(Namespace)” 提供一种机制,将同一集群中的资源划分为相互隔离的组。 同一命名空间内的资源名称要唯一,但跨命名空间时没有这个要求。 命名空间作用域仅针对带有命名空间的对象,例如 Deployment、Se

    2024年02月08日
    浏览(68)
  • Kubernetes(K8s)常用命令大全:熟练编排更完美

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(46)
  • java 对接 k8s API、K8s基本架构、k8s常用命令

    引言: 当容器部署涉及到 多个节点 服务器,用docker、docker-compose 来部署就不是那么方便了,不能统一控制,不方便伸缩,配置统一管理、版本控制;当我们业务涉及到集群容器部署时,就考虑K8s、K3s 来实现。 k8s 架构组成: (一)Master :apiserver、scheduler、controller-manager 以

    2024年02月16日
    浏览(40)
  • 云原生Kubernetes:K8S常用服务端口

    目录 一、理论 1.K8S常用服务端口号 (1)K8S集群 表1 K8S集群端口 协议 端口号 K8S集群 TCP 22 使用主机驱动通过SSH进行节点配置 TCP 53 集群DNS服务 UDP 53 集群DNS服务 TCP 2376 主机驱动与Docker守护进程通信的TLS端口 TCP 2379 etcd客户端请求 TCP 2380 etcd节点通信 UDP 8472 Canal/Flannel VXLAN ove

    2024年02月10日
    浏览(71)
  • kubernetes(k8s)大白学习02:容器和docker基础、使用、架构学习

    简单说:容器(container)就是计算机上的一个沙盒进程,它与计算机上的所有其它进程相隔离。 这种隔离是怎么做到的呢?它利用了内核提供的 namespace 和 cgroup 这 2 种技术。这些技术能力在 Linux 中已经存在了很长时间。而 Docker 或容器技术致力于将这些功能更易于使用和更

    2024年02月07日
    浏览(69)
  • K8S - 架构、常用K8S命令、yaml资源清单部署、Ingress、故障排查、存储卷

    K8S官网文档:https://kubernetes.io/zh/docs/home/ 学习东西还是要从官方文档入手; 用于管理、扩展、自动部署容器; 其实就是 对多个跨机器的Docker集群; 服务发现和负载均衡 Kubernetes 可以使用 DNS 名称或自己的 IP 地址来暴露容器。 如果进入容器的流量很大, Kubernetes 可以负载均

    2024年02月09日
    浏览(68)
  • docker在k8s容器中的作用,以及docker的底层原理,以及k8s的常用命令

        Docker的设计思想就是创建软件程序可移植性的轻量级容器,让其可以在任何安装了Docker的机器上,不用关心底层操作系统,就可以运行开发程序,就像集装箱一样使用。 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们

    2024年04月27日
    浏览(61)
  • k8s之Pod常用命令详解、镜像拉取策略(imagePullPolicy)

    imagePullPolicy 有三个取值: Always 每次都下载最新镜像 Never 不会尝试获取镜像,如果镜像已经以某种方式存在本地,kubelet 会尝试启动容器;否则,会启动失败 IfNotPresent 只有当镜像在本地不存在时才会拉取 默认镜像拉取策略: 当你(或控制器)向 API 服务器提交一个新的 Po

    2024年02月04日
    浏览(57)
  • 4、Kubernetes 架构、理解 k8s 架构

    kubeadm 用于初始化 Cluster。 kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。 kubelet 运行在 Cluster 所有节点上,负责启动 Pod 和容器。 Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务。 通过 kub

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包