Kubernetes一Kubernetes之入门

开通VIP,畅享免费电子书等14项超值服

首页

好书

留言交流

下载APP

联系客服

2023.04.28江苏

在部署应用程序的方式上,主要经历了三个时代:

容器化部署方式给带来很多的便利,但是也会出现一些问题,比如说:

这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件:

kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。

kubernetes官网

kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:

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

master:集群的控制平面,负责集群的决策(集群管理者)

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

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

Etcd:负责存储集群中各种资源对象的信息(默认使用etcd,也可以手动改为mysql等)

node:集群的数据平面,负责为容器提供运行环境(真正干活)

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

KubeProxy:负责提供集群内部的服务发现和负载均衡(访问k8s里程序的入口,例如他可以提供访问linux的入口)

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

下面,以部署一个nginx服务来说明kubernetes系统各个组件调用关系:

这样,外界用户就可以访问集群中的nginx服务了

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

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

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

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

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

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

NameSpace:命名空间,用来隔离pod的运行环境(默认pod之间是可以相互访问的,有了Namspace后,可以控制pod之间是否能访问)

为了测试方便,本次搭建的是一主多从类型的集群。

kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包。

●minikube:一个用于快速搭建单节点的kubernetes工具。●kubeadm:一个用于快速搭建kubernetes集群的工具。●二进制包:从官网上下载每个组件的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效。

我们需要安装kubernetes的集群环境,但是又不想过于麻烦,所以选择kubeadm方式

本次环境搭建需要三台CentOS服务器(一主二从),然后在每台服务器中分别安装Docker(18.06.3)、kubeadm(1.18.0)、kubectl(1.18.0)和kubelet(1.18.0)。

没有特殊说明,就是三台机器都需要执行。

配置虚拟机IP与主机名

DNS地址使用阿里的地址即可

检查操作系统的版本(要求操作系统的版本至少在7.5以上)

生产环境不能这么干,只打开使用的端口即可

关闭防火墙:

systemctlstopfirewalld禁止防火墙开机启动:

设置主机名语法

hostnamectlset-hostname设置192.168.18.100的主机名:

hostnamectlset-hostnamemaster设置192.168.18.101的主机名

hostnamectlset-hostnamenode1设置192.168.18.102的主机名

hostnamectlset-hostnamenode22.2.2.4主机名解析为了方便后面集群节点间的直接调用,需要配置一下主机名解析,企业中推荐使用内部的DNS服务器里配置。

直接执行这俩命令:

systemctlstartchronydsystemctlenablechronyd或者执行下边这俩命令也行:

yuminstallntpdate-yntpdatetime.windows.com2.2.2.6关闭selinuxselinux是linux下的安全服务,如果不关闭,在安装集群中会产生各种问题

查看selinux是否开启

getenforce永久关闭selinux,需要重启

永久关闭swap分区,需要重启

在每个节点上将桥接的IPv4流量传递到iptables的链

cat>/etc/sysctl.d/k8s.conf<

yum-yinstallipsetipvsadm# 或者yuminstallipsetipvsadmin-y在所有节点执行如下脚本:添加需要的模块写入脚本文件(直接复制下边的命令回车即刻)

chmod755/etc/sysconfig/modules/ipvs.modules执行脚本

/bin/bash/etc/sysconfig/modules/ipvs.modules检查是否加载:

lsmod|grep-eipvs-enf_conntrack_ipv42.2.2.10重启三台机器重启三台Linux机器:

启动docker

systemctlstartdocker#设置开机启动dockersystemctlenabledocker查看docker版本

yuminstall-ykubelet-1.18.0kubeadm-1.18.0kubectl-1.18.0为了实现Docker使用的cgroupdrvier和kubelet使用的cgroupdrver一致,建议修改"/etc/sysconfig/kubelet"文件的内容:

vim/etc/sysconfig/kubelet#修改KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"KUBE_PROXY_MODE="ipvs"设置kubelet为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动:

systemctlenablekubelet8完

查看k8s所需镜像:

部署k8s的Master节点(192.168.18.100):

情况二:如果之前没有下载好镜像,可以使用下边命令在线下载安装master

根据提示,在192.168.18.101和192.168.18.102上添加如下的命令:

默认的token有效期为24小时,当过期之后,该token就不能用了,这时可以使用如下的命令创建token:

kubeadmtokencreate--print-join-command#生成一个永不过期的tokenkubeadmtokencreate--ttl0--print-join-command2.2.7部署CNI网络插件根据提示,在Master节点上使用kubectl工具查看节点状态:

使用配置文件启动flannel:

在Kubernetes集群中部署一个Nginx程序,测试下集群是否正常工作。

部署Nginx:(在master操作即可)

kubectlcreatedeploymentnginx--image=nginx:1.14-alpine暴露端口:

#NodePort:集群外的浏览器可以访问kubectlexposedeploymentnginx--port=80--type=NodePort查看服务状态:

yuminstall-ybash-completionsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)echo“source<(kubectlcompletionbash)”>>~/.bashrcvim/root/.bashrcsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)二kubernetes集群环境搭建2.1前置知识点目前生产部署Kubernetes集群主要有两种方式:

kubeadm

Kubeadm是一个K8s部署工具,提供kubeadminit和kubeadmjoin,用于快速部署Kubernetes集群。

二进制包

从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。

Kubeadm降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具,这个工具能通过两条指令完成一个kubernetes集群的部署:

在开始之前,部署Kubernetes集群机器需要满足以下几个条件:

docker-ce.repo

kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。

kubernetes的最小管理单元是pod而不是容器,所以只能将容器放在Pod中,而kubernetes一般也不会直接管理Pod,而是通过Pod控制器来管理Pod的。

Pod可以提供服务之后,就要考虑如何访问Pod中服务,kubernetes提供了Service资源实现这个功能。

当然,如果Pod中程序的数据需要持久化,kubernetes还提供了各种存储系统。

学习kubernetes的核心,就是学习如何对集群上的Pod、Pod控制器、Service、存储等各种资源进行操作

YAML是一个类似XML、JSON的标记性语言。它强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义比较简单,号称"一种人性化的数据格式语言"。

xml:

15

Beijing
yml:

heima:age:15address:BeijingYAML的语法比较简单,主要有下面几个:

YAML支持以下几种数据类型:

1书写yaml切记:后面要加一个空格

2如果需要将多段yaml配置放在一个文件中,中间要使用---分隔

3下面是一个yaml转json的网站,可以通过它验证yaml是否书写正确

下边是三种创建pod的方式

kubectl命令

kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。kubectl命令的语法如下:

kubectl[command][type][name][flags]comand:指定要对资源执行的操作,例如create、get、delete,可以通过kubectl--help命令查看所有命令

type:指定资源类型,比如deployment、pod、service

name:指定资源的名称,名称大小写敏感

flags:指定额外的可选参数

操作(comand类型)

kubernetes允许对资源进行多种操作,可以通过–help查看详细的操作命令

kubectl--help经常使用的操作有下面这些:

资源类型(type)

kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看:

kubectlapi-resources经常使用的资源有下面这些:

下面以一个namespace/pod的创建和删除简单演示下命令的使用:

#创建一个namespace名称叫devnamespace可以简写为ns[root@master~]#kubectlcreatenamespacedevnamespace/devcreated#获取namespace[root@master~]#kubectlgetns除了dev,其他是k8s集群自带的NAMESTATUSAGEdefaultActive21hdevActive21skube-node-leaseActive21hkube-publicActive21hkube-systemActive21h#在此namespace下创建并运行一个nginx的Pod[root@master~]#kubectlrunpod--image=nginx:latest-ndevkubectlrun--generator=deployment/apps.v1isDEPRECATEDandwillberemovedinafutureversion.Usekubectlrun--generator=run-pod/v1orkubectlcreateinstead.deployment.apps/podcreated#查看新创建的pod,默认查询default的namespace下的pod[root@master~]#kubectlgetpod-ndevNAMEREADYSTATUSRESTARTSAGEpod1/1Running021s#删除指定ns下的的指定pod[root@master~]#kubectldeletepodspod-864f9875b9-pcw7x-ndevpod"pod"deleted#删除指定的namespace[root@master~]#kubectldeletensdevnamespace"dev"deleted3.3.2命令式对象配置命令式对象配置就是使用命令配合配置文件一起来操作kubernetes资源。

1)创建一个nginxpod.yaml,内容如下:

#创建名字是dev的namespaceapiVersion:v1kind:Namespacemetadata:name:dev#yml文件里,要写两个名字一样的配置的话,需要使用---做分割---#在dev下创建一个pod,pod名字是nginxpod,镜像以及镜像版本是nginx:1.17.1apiVersion:v1kind:Podmetadata:name:nginxpodnamespace:devspec:containers:-name:nginx-containersimage:nginx:1.17.12)执行create命令,创建资源:

[root@master~]#kubectlcreate-fnginxpod.yamlnamespace/devcreatedpod/nginxpodcreated此时发现创建了两个资源对象,分别是namespace和pod

查看名字是dev的namespace

kubectlgetnsdev查看dev下的pod

3)执行get命令,查看资源:

[root@master~]#kubectlget-fnginxpod.yamlNAMESTATUSAGEnamespace/devActive18sNAMEREADYSTATUSRESTARTSAGEpod/nginxpod1/1Running017s这样就显示了两个资源对象的信息

4)执行delete命令,删除资源:

[root@master~]#kubectldelete-fnginxpod.yamlnamespace"dev"deletedpod"nginxpod"deleted此时发现两个资源对象被删除了

kubectl的运行是需要进行配置的,它的配置文件是在master节点下的$HOME/.kube,如果想要在node节点运行此命令,需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:

scp-rHOME/.kubenode1:HOME/使用推荐:三种方式应该怎么用

删除资源使用命令式对象配置kubectldelete-fXXX.yaml

查询资源使用命令式对象管理kubectlget(describe)资源名称

THE END
1.github操作学习笔记这是一个学习github高级操作的笔记本 创建新仓库 1、先在github上建一个新仓库 2、打开vscode终端 git init 初始化仓库 git add README.md 保存新文件 git commit -m "first commit" 提交新文件 git branch -M main 更名为main分支 git remote add origin https://github.com/ZJR-FZD/experiment1.git 添加https://blog.csdn.net/2302_79795489/article/details/144332325
2.github下载的东西怎么运行?Worktile社区要运行从GitHub下载的东西,你需要遵循一些基本的步骤。下面是一个简单的指南,告诉你如何运行从GitHub下载的项目。 1. 首先,确认你的计算机上是否已安装了所需的运行环境。通常,从GitHub下载的项目会有一个说明文件,其中包含了必要的依赖项和环境要求。你需要确保你的计算机上已经安装了这些依赖项和环境。 https://worktile.com/kb/ask/515877.html
3.github上下载的python程序如何运行git上下载项目下载完成,点击.exe文件打开运行,然后点击Next 按需选择安装组件与配置,我这里使用的是默认选项。然后点击Next。 选择Git默认编辑器 注意:选择默认编辑器的时候,只能选择电脑里已经安装了的编辑器,没有安装的,需要先安装。 Git安装程序中有10种编辑器和1个其他项可以选择,比如:the Nano、Vim、Notepad++、Visual Studiohttps://blog.51cto.com/u_16213624/9144116
4.GitHub加速器GitHub加速工具下载下载电脑V1.60以管理员运行exe,也可打开exe文件属性->兼容性->以管理员运行 最后的话 如何有不对的地方或者更好的办法,欢迎讨论 如果还是访问不了网站,这是正常现象,因为只是加速,不能保证100%访问 GitHub加速工具下载 电脑V1.60 普通下载地址: 本地普通下载 本地电信下载 http://www.kkx.net/soft/85527.html
5.HelperWiki·publishhelper/publish打开本仓库Releases,下载最新的zip文件。 如果中国大陆GitHub下载缓慢,可访问Gitee仓库Releases,内容会同步更新。 2. 解压软件 解压下载后的zip压缩包,获取解压后的文件夹,并且储存到你想要存的地方。 3. 运行软件 打开解压后的Publish Helper文件夹,双击运行Publish Helper.exe应用程序,耐心等待软件启动。 至此,软件https://github.com/publish-helper/publish-helper/wiki/Publish-Helper-Wiki
6.Deskreen它可能与这个错误有关: https://github.com/pavlobu/deskreen/discussions/68#discussioncomment-330357 在我的操作系统上,Deskreen 应用程序无法运行/安装。防病毒软件会阻止它,并提示它可能有病毒。它有病毒吗?我该怎么办? Deskreen 安装文件中没有病毒,您可以使用防病毒软件进行检查。你看到这些警告的原因是这个应用https://deskreen.com/
7.Github如何下载文件或源代码这篇文章教大家如何下载GitHub上面的代码或者单个文件,以及已经编译好的可执行软件文件,网上很多地方都没有把这个事情讲明白,连一张图都没有配,简直让人无法接受,本站将简单明了的教你怎么下载GitHub上面的东西。 我们告诉你最简单的方法下载,方便你快速入门,GitHub也支持使用客户端clone,也支持命令复制代码,不过那对https://get.qiaobuqiao.com/post-7907
8.Mac如何安装FaceFusion视频AI换脸软件张洪Heo这篇文章介绍了如何在Mac上安装和使用AI视频换脸软件的步骤。首先,它提供了安装所需环境(Python、PIP、GIT、FFmpeg)的命令。接着,介绍了如何下载源文件和设置Python环境。文章详细说明了如何运行安装脚本,包括选择Torch变体和处理器类型。最后,它指导用户如何运行软件、下载模型,并使用浏览器访问软件的主界面,以及如何选https://blog.zhheo.com/p/a856617c.html
9.如何解决百度云下载大文件限速问题ps:百度云下载不保证是最新版,最新版请自行到github下载 3.下载好插件以后,打开谷歌浏览器->更多工具->扩展程序 ->将下载好的文件(chrome.crx)直接拖到扩展程序界面 这样扩展程序就安装好了。 打开百度云的分享界面,我们可以看到多了一个按钮。 测试链接:https://pan.baidu.com/s/1dECWsdN https://www.jianshu.com/p/cc25189db4a1
10.简易教程NLPIR汉语分词系统2.下载-解压后,得到2.3GB的文件夹,点击该文件夹。 3.点击【NLPIR-Parser】。 4.根据系统情况(32/64),选择相应文件夹。 5.点击【NLPIR-Parser】。 注意:如果弹出【授权文件无效】,需要重新下载授权文件。 GitHub上的授权文件页面:https://github.com/NLPIR-team/NLPIR/tree/master/License https://www.douban.com/note/715867867/
11.Git--distributed-is-the-new-centralized Git is afree and open sourcedistributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git iseasy to learnand has atiny footprint with lightning fast performance. It outclasses SCM tools like https://git-scm.com/
12.智算平台模型训练相关问题智算平台常见问题在Jupyter文件浏览器双击打开ipynb文件,并在导航栏选择:File-Save and Export Notebook As-Executable Script 10. 如何在预置kernel的Notebook文件中运行py文件,且确保能引用到预置kernel的包? 在Notebook里执行pip,查看当前使用的kernel对应的环境,并在运行py文件时,使用绝对路径的python,例如,使用预置kernel时,可在Nohttps://ecloud.10086.cn/op-help-center/doc/article/51475
13.2019年5月,如何解决百度云限速问题?Morix(WIN / IOS / Lunix)下载:https://motrix.app/ ? Windows推荐使用IDM,Mac上推荐使用Morix 下面阿虚讲一下IDM的安装使用注意事项等。 IDM安装说明 解压后,右键解压出来的文件「点我绿化卸载.bat」,选择管理员模式运行,安装软件。 打开Chrome浏览器的更多工具——扩展程序——打开右上角的开发者模式——https://weibo.com/ttarticle/p/show?id=2309404367596328747071