kubernetes (k8s)的使用

news2024/11/24 20:57:22

一、kubernetes 简介 

谷歌2014年开源的管理工具项目,简化微服务的开发和部署。
提供功能:自愈和自动伸缩、调度和发布、调用链监控、配置管理、Metrics监控、日志监控、弹性和容错、API管理、服务安全等。
官网:https://kubernetes.io/zh-cn/
GitHub地址:https://github.com/kubernetes/kubernetes

1.1、Kubernetes 主要功能 

1.自我修复:当某个容器崩溃时,能够在1秒左右迅速启动新的容器

2.弹性伸缩:根据需要,自动对集群中正在运行的容器数量进行调整

3.服务发现:服务可以通过自动发现的形式找到它所依赖的服务

4.负载均衡:当一个服务起动了多个容器,能够自动实现请求的负载均衡

5.版本回退:当发现新发布的程序版本有问题,可以立即回退到原来的版本

6.存储编排:根据容器自身的需求自动创建存储卷,Pod中容器之间共享数据

1.2、Kunbernetes 主要概念

1.Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控

2.Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行

3.Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器

4.Controller:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等

5.Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod

6.Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签

7.NameSpace:命名空间,用来隔离pod的运行环境

1.3、组件  

一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。

1.Master:负责集群的决策管理

2.ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制

3.Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上

4.ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等

5.Etcd:负责存储集群中各种资源对象的信息

6.Node:负责为容器提供运行环境

7.Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器

8.KubeProxy : 负责提供集群内部的服务发现和负载均衡

9.Docker : 负责节点上容器的各种操作

1.3.1、节点组成 

1.master 主节点 

Etcd:整个集群的数据库,存储集群的状态数据、配置、节点等,采用 Raft 协议。
API-server:连其它组件、Etcd,提供各类 api 处理,和 Node节点 通信等。对外提供操作和获取 k8s 集群资源的 API。
Scheduler:在 k8s 集群中做调动决策,负责资源的调度、打分、分配资源。
Controller-Manager:控制各类 Controller,观察、维护集群的状态,故障检测、自动扩展、滚动更新等,协调让实际状态和预期状态达到一致。

2.work 从节点

Docker:负责容器创建和管理。
Kubelet:管理容器的生命周期,与 master 节点交互(汇报自身情况)。
Kube-proxy:网络代理,Pod 寻址、负载均衡等。

1.4、工作流程 

1.当kubernetes启动后,master和node将自身的信息存储到etcd数据库中;

2.一个服务的安装请求会首先被发送到master节点的apiServer组件;

3.apiServer调用scheduler组件来决定服务安应该装到哪个node节点上;从etcd中读取各个node节点的信息;

4.apiServer调用controller-manager去调度Node节点安装服务;

5.kubelet接收到指令后,会通知docker,由docker来启动一个服务pod;

6.访问服务要通过kube-proxy来对pod产生访问的代理,如此就可以访问集群中的服务了。

二、使用 

2.1、常用命令

# 查看命令
kubectl --help

# 查询k8s集群节点
kubectl get nodes

# 查看所有的pod
kubectl get pod

# 查看pod详细内容
kubectl describe pod nginx-6867cdf567-ht2bz

# 查看k8s 集群的信息
kubectl cluster-info

# 查看当前k8s 集群的版本
kubectl version 

#命令形式创建一个namespace
kubectl create namespace udiannet-dev

# 查询所有的namespace
kubectl get ns

# 在udiannet-dev的namespace 下运行一个pod
kubectl run pod --image=nginx -n udiannet-dev

# 查看udiannet-dev下的pod
kubectl get pod -n udiannet-dev

# 查看该pod的详细信息(要制定namespace)
kubectl describe pod pod-864f9875b9-492tz -n udiannet-dev

# 删除该pod(要指定namespace)
kubectl delete pods pod-864f9875b9-492tz -n udiannet-dev

# 创建一容器镜像为 nginx 名称为 nginx-test 的 Pod 并在 8080 端口将其暴露为与Pod 同名的 Service
kubectl run nginx-test --image=nginx --port=8080 --expose

NameSpace的创建 

# 创建一个namespace
[k8s@administrator root]$ kubectl create namespace test
namespace/test created

# 查看namespace
[k8s@administrator root]$ kubectl get ns
NAME                   STATUS   AGE
default                Active   3d3h
kube-node-lease        Active   3d3h
kube-public            Active   3d3h
kube-system            Active   3d3h
test                   Active   8s

# 创建并运行一个nginx的Pod资源
[k8s@administrator root]$ kubectl run nginx-pod --image=nginx -n test
pod/nginx-pod created

# 查看test命名空间下新创建的pod
[k8s@administrator root]$ kubectl get pod -n test
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          8s

# 查看默认namespace中的资源
[k8s@administrator root]$ kubectl get pods
No resources found in default namespace.

# 删除指定的pod
[k8s@administrator root]$ kubectl delete pod nginx-pod -n test
pod "nginx-pod" deleted

# 删除命名空间
[k8s@administrator root]$ kubectl delete ns test
namespace "test" deleted

# 查看命名空间
[k8s@administrator root]$ kubectl get ns
NAME                   STATUS   AGE
default                Active   3d3h
kube-node-lease        Active   3d3h
kube-public            Active   3d3h
kube-system            Active   3d3h

# 查看某个NS,同时指定输出格式,常用格式:wide、json、yaml
[k8s@administrator ~]$ kubectl get ns default -o json
{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "creationTimestamp": "2022-03-21T09:00:52Z",
        "labels": {
            "kubernetes.io/metadata.name": "default"
        },
        "name": "default",
        "resourceVersion": "212",
        "uid": "2c41f796-922b-426c-a5f4-78627e008e6b"
    },
    "spec": {
        "finalizers": [
            "kubernetes"
        ]
    },
    "status": {
        "phase": "Active"
    }
}

# 查看ns详情
[k8s@administrator ~]$ kubectl describe ns default
Name:         default
Labels:       kubernetes.io/metadata.name=default
Annotations:  <none>
Status:       Active

No resource quota.

No LimitRange resource.

2.2、部署 

2.3、项目应用 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5-爬虫-打码平台、打码平台自动登录打码平台、selenium爬取京东商品信息、scrapy介绍安装、scrapy目录结构

1 打码平台 1.1 案例 2 打码平台自动登录打码平台 3 selenium爬取京东商品信息 4 scrapy介绍安装 5 scrapy目录结构 1 打码平台 # 1 登录某些网站&#xff0c;会有验证码---》想自动破解-数字字母&#xff1a;python模块&#xff1a;ddddocr-计算题&#xff0c;成语题&#xf…

物联网AI MicroPython学习之语法 ucollections集合和容器类型

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; ucollections 介绍 ucollections 模块用于创建一个新的容器类型&#xff0c;用于保存各种对象。 接口说明 namedtuple - 创建一个新namedtuple容器类型 函数原型&#xff1a; 创建一个具有特定名称和一组…

rviz添加qt插件

一、增加rviz plugin插件 资料&#xff1a;http://admin.guyuehome.com/42336 https://blog.51cto.com/u_13625033/6126970 这部分代码只是将上面两个链接中的代码整合在了一起&#xff0c;整合在一起后可以更好的理解其中的关系 1、创建软件包 catkin_create_pkg rviz_tel…

MySQL数据库的各种锁介绍以及它们之间的关系

MySQL数据库的各种锁 表级锁、行级锁、间隙锁、意向锁、记录锁&#xff0c;悲观锁和乐观锁 表级锁包含表级共享锁和表级排他锁行级锁包含行级共享锁和行级排他锁间隙锁是行级锁的一种特殊锁&#xff0c;锁定既定列的范围值意向锁是事务对表中某些行或者范围发起的一项操作&am…

Hbuiderx链接到夜神模拟器(DCloud数字天堂)

赞助 DCloud 即数字天堂&#xff08;北京&#xff09;网络技术有限公司是 W3C成员及 HTML5中国产业联盟 发起单位 Hbuiderx切换使用夜神模拟器自带的ADB.exe链接到夜神模拟器 同步资源失败&#xff0c;未得到同步资源的授权&#xff0c;请停止运行后重新运行&#xff0c;并注意…

数据的读取和保存-MATLAB

1 序言 在进行数据处理时&#xff0c;经常需要写代码对保存在文件中的数据进行读取→处理→保存的操作&#xff0c;流程图如下&#xff1a; 笔者每次在进行上述操作时&#xff0c;都需要百度如何“选中目标文件”以及如何“将处理好的数据保存到目标文件中”&#xff0c;对这一…

本地域名 127.0.0.1 / localhost

所谓本地域名就是 只能在本机使用的域名 &#xff0c;一般在开发阶段使用。 编辑文件 C:\Windows\System32\drivers\etc\hosts。 127.0.0.1 www.baidu.com如果修改失败,可以修改该文件的权限。 原理&#xff1a; 在地址栏输入 域名 之后&#xff0c;浏览器会先进行 DNS…

SpringBoot定时任务打成jar 引入到新的项目中后并自动执行

一、springBoot开发定时任务 ①&#xff1a;连接数据库实现新增功能 1. 引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional> </dependency> <dependen…

Python高级语法----深入理解Python协程

文章目录 什么是协程?Python中的协程基本示例协程和事件循环总结Python协程是一种非常强大的并发编程概念,让你能够高效地处理多任务。协程在Python中的使用已经变得越来越流行,特别是在异步编程中。本文将用通俗易懂的语言来介绍协程的概念,并提供实际的代码示例和执行结果…

软件测试怎么测别的类的main方法

软件测试怎么测别的类的main方法 🍎如果软测开发者题目待测类里有main方法,我们如何测? 可以采取以下步骤: 了解main函数的功能:首先,你需要了解这个main函数的功能和预期的输出。这样你才能设计出合适的测试用例。设计测试用例:设计测试用例时,需要考虑各种可能的输…

【Linux】了解文件的inode元信息,以及日志分析

目录 一、inode表结构&#xff0c;以及元信息 1、了解inode信息有哪些 2、关于inode表的说明 Linux中访问文件的过程&#xff1a; 3、硬连接与软连接的区别&#xff0c;&#xff08;请看前面&#xff0c;写过的&#xff09; 二、文件系统的备份与恢复 三、几种常见的日志…

【uniapp】签名组件,兼容vue2vue3

网上找了个源码改吧改吧&#xff0c;清除了没用的功能和兼容性&#xff0c;基于uniapp开发的 样子 vue2 使用方法&#xff0c;具体的可以根据业务自行修改 <signature ref"signature" width"100%" height"410rpx"></signature>confi…

C函数的反汇编

fromelf --bin --outputxxx.bin xxx.axf fromelf --text -a -c --outputxxx.dis xxx.axf去Linker下面复制该目录下的xxx.axf xxx.dis名字随便改&#xff0c;保证后缀是dis就行 然后确认&#xff0c;进行编译 就生成了task.dis文件

【MySQL】库操作和表操作

文章目录 一、库操作1. 创建数据库2. 数据库的编码问题查看系统默认支持的字符集查看数据库支持的字符集查看数据库支持的字符集校验规则校验规则对数据库的影响 3. 操纵数据库查看数据库显示创建语句修改数据库删除数据库 4. 数据库的备份和恢复数据库的备份数据库的恢复表的删…

从业务到软件架构——软件建模

一、问题 1.架构到底是什么&#xff1f;架构和业务之间到底什么关系&#xff1f; 2.好的架构的设计出发点是什么&#xff1f;好的架构应该是什么样的&#xff1f; 作为一个计算机领域的词汇&#xff0c;架构的定义是&#xff1a;有关软件整体结构与组件的抽象描述&#xff0c…

ubuntu22.04使用VNC链接服务器远程桌面

一、本地VNC客户端 本地主要需要一个VNC客户端&#xff0c;用来远程连接服务器端的VNC&#xff08;在不安装Web版本VNC情况下&#xff09;。VNC客户端下载地址&#xff1a; VNC客户端下载 二、安装Xfce桌面环境 在远程服务器控制台中安装Xfce桌面&#xff08;这个桌面环境比…

redis持久化和Redis事务

一)Redis持久化之RDBredisDataBase: 什么是持久化: 1)持久性:和持久化说的是同一回事&#xff0c;衡量持久性的前提是重启进程或者是重启主机以后数据是否还存在 持久:把数据存储在硬盘上&#xff0c;那么就是持久性 不持久:把数据存储在内存中 2)redis是一个内存级别的数据库&…

关于electron中使用ffi-napi窗口遍历的过程及问题

使用环境&#xff1a;electorn19 、node16、ffi-napi、user32 前言&#xff1a;这里先提一嘴&#xff0c;windows api也是有32位和64位的区别的&#xff0c;因为我是要快速完成项目&#xff0c;就没用C写&#xff08;不熟练&#xff09;&#xff0c;我想着直接用易语言写DLL&am…

注册商标-保护企业利益

注册商标-保护企业利益&#xff01; 在当今竞争激烈的商业环境中&#xff0c;商标对于企业的成功至关重要。商标不仅是企业形象的代表&#xff0c;也是企业产品和服务的标识。通过注册商标&#xff0c;企业可以获得法律保护&#xff0c;确保其商标的独特性和安全性。本文将探讨…

1212. 地宫取宝

题目&#xff1a; 1212. 地宫取宝 - AcWing题库 思路&#xff1a;dp&#xff08;最长上升子序列和摘花生的结合&#xff09; 代码&#xff1a; #include<iostream> using namespace std; const int N 55; const int MOD 1000000007;int n, m, k; int w[N][N];//每个坐…