k8s之搭建单机集群

news2024/9/24 13:19:06

写在前面

本文一起看下如何在单机环境下搭建k8s集群。

基础环境准备参考这篇文章 。

在这里插入图片描述

1:k8s的前世今生

现在当我们提到容器技术时,首先想到的肯定是docker,但其实在docker之前,谷歌公司就已经有了类似的技术,我们知道cgroup是docker使用到重要技术之一,实现了容器对宿主机资源的限制,其就是谷歌为了实现其内部使用的容器技术而开发的,并在之后提交到了Linux内核代码库中,并在此基础上开发了集群应用的管理工具borg(闭源),目的是简化大量集群机器的部署难度,以及提高其利用率(如某个机器资源相对还充足,程序判断还可以部署其它应用,如果是人工的话可能就是直接使用新机器了),之后谷歌内部将borg升级为omega[ˈəʊmɪɡə],同时使用go语言重构了基于c++的borg,并将其开源,名字就叫做kubernetes,此时borg已经经过了谷歌内部系统长达十年的真实环境检验,所以k8s天生就是一个技艺精湛的老选手了,kubernetes的意思是舵手,我觉得含义就是像舵手一样带着整船的容器前行之意吧!之后谷歌更是与Linux基金会合作,强强联合,很快就将docker swarm,Apache Mesos这两个集群管理软件斩于马下

2:minikube

k8s在集群环境中部署非常复杂,并且部署完成后各个方便的管理也非常的严格,这其实就会对用户的使用造成极大的阻碍和难度,基于此,k8s非常贴心的为我们提供了两个k8s管理软件,kind和minikube,可以很方便的完成k8s集群的部署和管理工作,但因为kind功能过于简单,所以我们这里选择minikube作为学习的对象,

在熟悉k8s之后,如果需要对k8s快速的做某些测试的时候,kind会是一个比较好的选择,因为其体积小,运行速度特别快。

minikube可以理解为门面设计模式 中的门面类,简化了底层使用的复杂度。

接下来我们就看下如何安装minikube。首先我们执行如下命令:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube /usr/local/bin/

检验是否安装成功:

dongyunqi@dongyunqi-virtual-machine:~$ minikube version
minikube version: v1.28.0
commit: 986b1ebd987211ed16f8cc10aed7d2c42fc8392f�

但是minikube的功能仅仅限制于搭建k8s集群相关的内容,其不具备操作k8s集群的功能,比如集群内应用的创建,对此我们还需要依靠另外一个工具kubectl(类似于操作docker daemon的docker命令,这里k8s集群就相当于是docker daemon,即docker操作docker daemon,kubectl操作k8s集群),我们同样也来安装该工具:

minikube kubectl

默认会安装到用户目录,如下是我本地的安装结果:

dongyunqi@dongyunqi-virtual-machine:~$ ls /home/dongyunqi/.minikube/cache/linux/amd64/v1.23.3/
kubectl

运行kubectl有如下两种方式:

全路径:/home/dongyunqi/.minikube/cache/linux/amd64/v1.23.3/kubectl
minikube方式:minikube kubectl -- version 

这两种方式使用起来都比较麻烦,因此我们可以通过在~/.bashrc中配置alias kubectl="minikube kubectl --"的方式来简化使用,这样我们就能直接使用kubectl了,如下:

dongyunqi@dongyunqi-virtual-machine:~$ kubectl version --short
Client Version: v1.23.3
Server Version: v1.23.3

到这里和k8s相关的客户端工具我们就有2个了,一个是minikube用来管理k8s集群环境,还有一个就是kubectl用来操作k8s集群的实际功能,如新增pod等pod可以理解为披着马甲的容器,参考下图:

在这里插入图片描述

3:在单机创建k8s集群

这里创建k8s集群就需要用到我们操作k8s的2个客户端之一的minikube了,我们指定k8s的版本是v1.23.3,命令如下:

minikube start --kubernetes-version=v1.23.3

启动完毕后我们同样使用minikube命令来查看k8s集群的状态:

dongyunqi@dongyunqi-virtual-machine:~$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

只有一个主机名hostname为minikube的主机,当然这里是在我们宿主机内虚拟出来的,但与实体机无差,也可以通过minikube node list查看节点的信息:

dongyunqi@dongyunqi-virtual-machine:~$ minikube node list
minikube	192.168.49.2

我们可以通过minikube ssh登录到这个节点看下,其IP,hostname是否与我们这里看到的一致:

dongyunqi@dongyunqi-virtual-machine:~$ 
dongyunqi@dongyunqi-virtual-machine:~$ minikube ssh
Last login: Tue Jan  3 13:49:12 2023 from 192.168.49.1
docker@minikube:~$ ip addr
...
9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    ...
    inet 192.168.49.2/24 brd 192.168.49.255 scope global eth0
       ...
docker@minikube:~$ hostname
minikube

这样我们成功搭建了有一个node的k8s集群,接下来我们就可以使用kubectl工具来向k8s集群发号施令,让它为我们部署应用了,如下,我们在k8s集群中启动一个nginx:

kubectl run ngx --image=nginx:alpine

运行完毕后可以通过kubectl get pod,如下:

dongyunqi@dongyunqi-virtual-machine:~$ kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
ngx    1/1     Running   0          3h49m

这里pod可以理解为穿了马甲的容器。到这里我们单节点的k8s集群就搭建完毕了!

写在后面

参考文章列表:

设计模式之门面模式 。

k8s之基本环境准备 。

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

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

相关文章

借助免费AI艺术平台生成头像

随着 AI 的兴起&#xff0c;看到越来越多的实例通过 OpenAI 的举措变得轻松&#xff0c;使得 AI 艺术在今天早已不是什么新鲜事物&#xff0c;而且在游戏领域也开始有所应用。人工智能&#xff08;AI&#xff0c;artificial intelligence&#xff09;艺术&#xff0c;更准确地说…

数据挖掘与机器学习作业_09 贝叶斯

贝叶斯 贝叶斯公式 后验概率 先验概率 * 似然估计 from sklearn.model_selection import GridSearchCV from sklearn.naive_bayes import BernoulliNB from sklearn.naive_bayes import GaussianNB from sklearn.naive_bayes import MultinomialNB from sklearn.naive_bayes…

关于进程间的通信方式的总结

一、背景 在人类思想史上,马克思第一次对人的本质作出科学界定:人的本质是一切社会关系的总和。时间万物都存在或多或少的关系。那么人除了天生父子这样的家族关系&#xff0c;还有后天 通过 语言 &#xff0c;这样区别于其他动物的方式来进行和其他人的交流产生关系。 在计算…

PTL仓库提货解决方案

电子标签拣货系统是采用先进电子技术和通信技术开发而成的物流辅助作业系统&#xff0c;通常使用在仓储或现代化物流中心分拣环节&#xff0c;具有拣货速度快、效率高、差错率低、无纸化、标准化的作业特点&#xff0c;电子标签辅助拣货系统作为一种先进的作业手段&#xff0c;…

【小程序】如何开发属于自己的一款小程序

文章目录小程序简介概念小程序与普通网页开发的区别微信开发者工具小程序代码构成项目结构JSON 配置文件WXML 模板WXSS 样式JS 逻辑交互小程序的宿主环境宿主环境简介通信模型运行机制组件常用的视图容器类组件常用的基础内容组件其它常用组件API协同工作小程序成员管理小程序的…

数据完整性测试之【三】Redis缓存和数据库表里的记录

本文为博主原创&#xff0c;未经授权&#xff0c;严禁转载及使用。 本文链接&#xff1a;https://blog.csdn.net/zyooooxie/article/details/119377944 前面分享过 接口返回值 和 表记录 的校验 、 导出的CSV、Excel文件 和 表记录 的校验&#xff0c;最近 我们项目常常用到Re…

【大小端问题】

什么是大小端&#xff1f; 为什么存在大小端&#xff1f;如何判断计算机的大小端存储模式&#xff1f; 大小端是什么&#xff1f; 计算机在内存存储中有两中存储模式&#xff1a; 大端字节序存储模式和小端字节序存储模式。 大端存储模式&#xff0c;是指数据的低位保存在内…

API接口测试简介

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是API接口测试简介。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设备…

Hadoop高手之路8-Flume日志采集

文章目录Hadoop高手之路8-Flume日志采集一、Flume概述1. Flume简介2. Flume运行机制3. Flume日志采集系统结构图二、Flume的搭建1. 下载2. 上传3. 解压4. 配置环境变量5. 配置flume三、Flume入门使用1. 配置数据采集方案1) 查看官网2) 案例需求3) 创建新的配置文件4) 复制官网的…

公司业财一体化详解

一、传统财务会计如何手工做账1.没有财务系统&#xff08;软件&#xff09;时公司会计用手工记账&#xff0c;流程包括&#xff1a;建立总账&#xff1b;首先建立账簿&#xff0c;登记会计账簿时&#xff0c;应当将会计凭证日期、编号、业务内容摘要、金额和其他有关资料逐项计…

GAMES101作业5及框架梳理

闲言碎语 emmm&#xff0c;上一次写还是2022年4月份的事情了&#xff0c;真的有点恍如隔世&#xff0c;4月到9月主要是在准备保研的事情&#xff0c;然后10月到12月基本上是在适应实习生活&#xff08;没错&#xff0c;保完研之后因为种种原因就直接开始实习了&#xff0c;害&…

[Vue]Vue3学习笔记(尚硅谷)

文章目录&#x1f97d; 创建Vue3项目&#x1f30a; vue-cli&#x1f30a; vite&#x1f97d; 项目结构&#x1f97d; Vue3开发者工具的安装&#x1f97d; 初识setup&#x1f97d; ref 函数&#x1f97d; reactive函数&#x1f97d;Vue3.0中的响应式原理&#x1f30a; vue2.x的响…

微服务架构解决方案介绍

1、微服务架构 目前微服务是非常火的架构或者说概念&#xff0c;也是在构建大型互联网项目时采用的架构方式。 1.1 单体架构 在软件设计中&#xff0c;经常提及和使用经典的3层模型&#xff0c;即表示层、业务逻辑层和数据访问层。 表示层&#xff1a;用于直接和用户交互&a…

内网穿透(mac,window,linux通用)1分钟实现外网访问电脑本地服务器

我们在做开发时&#xff0c;不想购买服务器&#xff0c;只想搭建我们本地的服务器&#xff0c;我们搭建的本地服务器只能供我们自己电脑的浏览器访问&#xff0c;或者处于同一个wifi下的手机访问&#xff0c;但是我们如果想让别人访问到我们的本地服务器&#xff0c;尤其做微信…

共享模型之管程(三)

1.Synchronized优化原理 1.1.轻量级锁(Lock Record) 1.1.1.简介 1>.轻量级锁的使用场景:如果一个对象虽然有多个线程访问,但是多个线程访问的时间是错开的(即没有竞争),那么可以使用轻量级锁来进行优化; 2>.轻量级锁对使用者是透明的,即语法仍然是"synchronized…

docker减少构建镜像大小

目录 1.原镜像大小 1.1 Dockerfile文件 1.2 hello文件 1.3 进入文件夹myprojecthello打包镜像 1.4查看打包的镜像 2.通过拆分文件夹减少镜像大小 2.1 创建两个文件夹 2.2 移动文件 2.3 打包镜像 3. 通过 .dockerignore 文件的方式 3.1 创建 world.txt文件 3.2 创建 …

【Spring(三)】DI入门案例(XML版)

文章目录前言DI入门案例总结前言 前面我们已经演示了IOC入门案例的介绍&#xff0c;里边还有一些东西是耦合的&#xff0c;接下来我们就来学习DI的入门案例来解决这个问题&#x1f4aa;&#x1f4aa;。 DI入门案例 我们先来想一下&#xff0c;你做DI这个首先得先让IOC容器管着b…

STM32 TIM PWM中阶操作:互补PWM输出

STM32 TIM PWM中阶操作详解&#xff1a;互补PWM输出 STM32 TIM可以输出管脚PWM信号适合多种场景使用&#xff0c;功能包括单线/非互补PWM输出&#xff0c;双线/互补PWM输出&#xff0c;以及死区时间和刹车控制等。 实际上&#xff0c;因为早期IP Core的缺陷&#xff0c;早期的…

万应低代码12月重点更新内容速递

速览版 详情版 低代码开发效率升级 01 动作流 动作编排过程中涉及到多条件判断时使用&#xff0c;即&#xff1a;满足某条件可执行一条分支&#xff0c;不满足则执行“其他”分支。 【使用场景】 ● 以“个人所得税计算”场景为例&#xff0c;不同收入水平的人输入不同的收…

人工智能对联生成 API 数据接口

人工智能对联生成 API 数据接口 基于百万数据训练&#xff0c;AI 训练与应答&#xff0c;多结果返回。 1. 产品功能 AI 基于百万历史对联数据训练应答模型&#xff1b;机器学习持续训练学习&#xff1b;一个上联可返回多个下联应答&#xff1b;毫秒级响应性能&#xff1b;数据…