【Kubernetes】如何使用Kubeadm部署K8S集群
一 . 准备机器
本次环境采用华为云ECS弹性云服务器部署(也可以使用VMware)
vm01(2V4G): Ubuntu_18.04作为K8S master节点
vm02(1V1G): Ubuntu_18.04作为K8S node节点
备注: 以下所有操作都是在root用户下执行
二 . 在master节点安装k8s和Docker
1.安装需要的包
由于apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书
sudo apt install apt-transport-https ca-certificates software-properties-common curl
2.添加 谷歌GPG 密钥
执行
curl -s https://mirrors.huaweicloud.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
从华为云开源镜像网站获取安装
3.安装docker 和kubeadm
首先我们修改一下Docker的镜像源,这里我们使用中科大USTC镜像源
echo “deb https://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main” \ > /etc/apt/sources.list.d/kubernetes.list
apt-get update ——安装docker
apt-get install -y docker.io kubeadm ——安装kubeadm
在上述安装 kubeadm 的过程中,docker 和kubeadm、 kubelet、kubectl 工具都会被自动安装好。
4.设置开机自启动并启动 Docker(后默认已设置自启动,可忽略)
systemctl enable docker
systemctl start docker
5.执行 kubeadm init 自动化安装kubernets
发现这7个k8s.gcr.io的镜像包无法获取。这就遇到了部署K8S最大的难题就是镜像下载,由于是国内机器, 如果不进行科学上网在国内很难从k8s.gcr.io等镜像源里下载镜像。
这种情况下我们可以 直接指定国内镜像代理仓库(如阿里云代理仓库)进行镜像拉取下载, 成功拉取代理仓库中的镜像后,再将其tag打标签成为k8s.gcr.io对应镜像,最后再删除从代理仓库中拉取下来的镜像,前提要确保imagePullPolicy策略是IfNotPresent,即本地有镜像则使用本地镜像,不拉取!或者将下载的镜像放到私有仓库里,然后将image下载源指向私仓地址。
因为不同的K8S版本需要的镜像包不一样,我们可以使用
kubeadm config images list 命令查询一下kubeadm所需的k8s镜像包版本
我们使用 docker pull 拉取所需镜像包(这里指定一下镜像源)
例:docker pull registry.aliyuncs.com/google_containers/coredns:1.7.0
docker pull registry.aliyuncs.com/google_containers/etcd:3.4.13-0
然后打tag,并删除之前从代理仓库下载的镜像
例:docker tag registry.aliyuncs.com/google_containers/coredns:1.7.0
docker rmi 镜像名称 ——删除pull下来的额镜像
例:docker rmi registry.aliyuncs.com/google_containers/etcd:3.4.13-0
然后再执行 kubeadm init 就可以了
执行完成后k8s即安装完成,最后会输出kubeadm join那段命令,这个是node节点加入集群必须执行的命令。但是kubeadm init自动生成的token有效期只有24小时。
kubeadm join 192.168.0.3:6443 --token 9dimd4.cte6oheldr8p7ecq
–discovery-token-ca-cert-hash sha256:aad7cddf4764b9a576d315096c24059de53486f187a9135c8067268aa7167403
当然我们也可以使用
kubeadm token create --ttl 0
生成一个永不过期的 token(olt9w7.6yew4d24q40n5raa),后续node节点加入集群是要用到。
执行
kubectl get nodes
发现报错了,第一次使用k8s需要执行下面命令配置kubect所需文件。
执行下面命令:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown (id−u):(id -u):(id−u):(id -g) HOME/.kube/config再次执行kubectlgetnodes就行了可以发现当前节点状态NotReady状态使用下面命令查看kubelet日志,看到网络插件没有安装journalctl−f−ukubelet执行下面命令安装weave插件kubectlapply−fhttps://cloud.weave.works/k8s/net?k8s−version=HOME/.kube/config 再次执行kubectl get nodes 就行了  可以发现当前节点状态NotReady状态 使用下面命令查看kubelet日志,看到网络插件没有安装 journalctl -f -u kubelet  执行下面命令安装weave插件 kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=HOME/.kube/config再次执行kubectlgetnodes就行了可以发现当前节点状态NotReady状态使用下面命令查看kubelet日志,看到网络插件没有安装journalctl−f−ukubelet执行下面命令安装weave插件kubectlapply−fhttps://cloud.weave.works/k8s/net?k8s−version=(kubectl version | base64 | tr -d ‘\n’)
看到节点已经正常了。master节点已经安装完成。
三. node节点加入集群
1、登陆vm02,node节点虚拟机,参考前面步骤1 2 3 4,安装kubeadm和docker 但是不执行kubeadm init
2 、然后需要下载kube-proxy pause镜像(同上,先拉取镜像再修改tag)
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.20.2
docker pull registry.aliyuncs.com/google_containers/pause:3.2
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.20.2 k8s.gcr.io/kube-proxy:v1.20.2
docker tag registry.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker rmi registry.aliyuncs.com/google_containers/kube-proxy:v1.20.2
docker rmi registry.aliyuncs.com/google_containers/pause:3.2
3 、执行kubeadm join命令加入集群(join命令是master安装时生成的)
这里token换成永久的token
kubeadm join 192.168.0.3:6443 --token 9dimd4.cte6oheldr8p7ecq
–discovery-token-ca-cert-hash sha256:aad7cddf4764b9a576d315096c24059de53486f187a9135c8067268aa7167403
4、安装weave网络插件
这里要用到kubectl命令,但是node节点不是master 无法执行。所以按照下面命令,admin.conf文件从master主机拷贝到node节点。
mkdir -p $HOME/.kube
scp {masterip}:/etc/kubernetes/admin.conf $HOME/.kube/config
chown (id−u):(id -u):(id−u):(id -g) HOME/.kube/config安装weave:kubectlapply−f"https://cloud.weave.works/k8s/net?k8s−version=HOME/.kube/config  安装weave: kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=HOME/.kube/config安装weave:kubectlapply−f"https://cloud.weave.works/k8s/net?k8s−version=(kubectl version | base64 | tr -d ‘\n’)"
5、查看node节点状态,部署完成。
相关文章:

解决ORA-28000: the account is locked
在oracle中,连续十次尝试登陆不成功,那么此账户将会被锁定(lock)。当使用被锁定的账户登录时,系统会报错:ORA-28000: the account is locked。查询FAILED_LOGIN_ATTEMPTS参数默认值,这个参数限制…
Android sudio Day01-1
今天我开始学习Android studio的第二天,主题是Android studio的安装。 之前的学校学习都是使用Android开发者工具(Android development tools,ADT),而ADT作为一个Android开发工具,它是通过内置于Eclipse的…

学习用C#在Unity中创建一个2D Metroidvania游戏
学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计,水平提升,米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Learn To Create A 2D Metroidvania Game in Unity With C# MP4 |视频:h264,…

3.27课·········悬浮动态分层导航与隐藏导航
例1:分层导航 <title>分层导航</title> <script src"../JavaScript/jquery-1.4.2.min.js">//引用外部JS代码 </script> <style> #apDiv1 {position: fixed;left: auto;top: auto;bottom: auto;width: 237px;height: auto;z-index: 2;m…

.sh是什么语言_shell的重生历史:从sh到bash
shell 门派之争Linux 中的 shell 有很多类型,其中最常用的几种是:Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh),它们各有优缺点,用户则萝卜青菜,各有所爱。Bourne shell 出师不利Bash:Bourne aga…

【Docker】容器的几种网络模式
当你使用Docker时,你会发现需要了解很多关于网络的知识。Docker作为目前最火的轻量级容器引擎,因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求。本文介绍了Docker的4种网络模式。 1、首先我们先简单描述一下容器…

微信推送模板消息的PHP代码整理
本文为本人原创,未经许可,不可转载。 博主长期从事微信开发,微信开发相关问题和业务请联系qq 2580234897 最近做过一个需要推送消息的系统,就研究了一下微信的模板消息的推送。由于认证过的微信号,就用测试号做的&…
Android studio Day01-23
AndroidDay01-2(Android studio安装) 步骤如下: (1)下载Android studio下载地址:www.developer.android.com./sdk/installing/studio.html (2)双击安装,建议在studio安…

Unity 3D学习视觉脚本无需编码即可创建高级游戏
在本课程中,您将学习如何在Unity中使用可视化脚本(以前称为Bolt)以及如何在不编写一行代码的情况下创建自己的高级游戏所需的一切。本课程将教你如何掌握可视化脚本,即使你以前没有任何关于unity或编程的经验。 课程获取:Unity 3D学习视觉脚…

树莓派siri homekit_利用树莓派Zero自制一款Homekit摄像头,看上去挺酷,手痒了吗?...
虽然最近相继有多款兼容homekit商用摄像头上市,如果您也和小编一样,喜欢动手,那么DIY一款Homekit摄像头,然后自己3D打印个外壳支架,是不是很酷?HKCam项目Home 4开发者Matthias提供了一个开源项目࿰…

如何释放电脑被限制的20%网速?
很多朋友不管是看电影还是玩游戏,总觉得自己的网速慢,这跟自己所办网络的带宽有一定关系,但我们也要知道,我们的电脑在买来时,默认是限制了20%网速的,如何释放这20%的网速,提高用户体验呢&#…

【Docker】registry部署docker私有镜像仓库
Docker Hub作为Docker默认官方公共镜像仓库,但是如果我们不想使用怎么办,第一我们可以替换默认镜像仓库为我们国内的一些镜像仓库,第二就是如我们自己搭建一个自己的私有镜像仓库,官方也提供docker registry镜像,使得搭…

JAVA 面向对象
1;什么叫面向对象:1;面向对象和面向过程是一种思想2;面向过程:强调的是功能行为3;面向对象:将功能进行封装,强调具备了功能的对象2;面向对象的特征:1…
Android studio Day02-1
AndroidDay02-1(project) 新建一个project,并选择一个自己project的存贮的位置 Android studio 2.3.1默认的最小的API为15 第一次使用并建立自己的project,软件进行相应的sdk其他的组建的安装 点击next进入下一个界面,…

Unity Pro builder创建模块化仓库建筑学习教程
Unity内部的专业3D编辑工作室 你会学到: 直接在Unity内部学习3D建模 使用专业构建器的专业方法 为您的游戏创建模块化资产 了解如何为您的三维模型设置纹理 三维资产的模块化布局 专业后期制作和轻烤 Unity Pro Builder Warehouse MP4 |视频:h264,1280720 |音频:AA…

C++拾遗(五)语句相关
前缀格式与后缀格式 对于表达式:后缀如 i 表达式的值仍是 i,在遇到下一个顺序点后再将 i 加1。前缀 i 表达式的值就是(i1),先计算表达式的值,不需要等待 顺序点。 对于类:前缀函数效…

github里的默认域_GitMAD 一款扫描Github上的敏感信息和数据泄漏工具
GitMAD是一个用于发现Github上的敏感信息和数据泄漏的工具。通过给定关键字或域,GitMAD便会搜索Github上托管的代码,以查找是否存在匹配项。一旦找到了匹配项,GitMAD将克隆存储库并在文件中搜索一系列可配置的正则表达式。然后,Gi…

【Docker】Docker的三大核心组件
镜像(Image)、容器(Container)、仓库(Repository)是我们常说的Docker的三大组件,接下来就让我们一起详细地探索一番吧。 一、镜像(Image) 什么是Docker镜像?…

很高兴开始博客之旅
来到博客园!,开启我的博客之旅,感觉棒棒哒转载于:https://www.cnblogs.com/pbnull/p/4562230.html
Android Studio Day02-2
AndroidDay02-2(AVD) Android APP编译的过程之中总是会需要进行相应的功能的调试,以及界面的布局设置在不同手机上的效果的展示。相应的Android平台都包含有Android虚拟设备管理器,Android虚拟设备管理器允许用户自己创建自己的虚…

网络增强现实开发简介 Introduction to Web AR development
搭配webXR、mindAR、three.js和tensorflow.js 你会学到: 获得构建不同类型的网络增强现实应用程序的实践经验,包括图像效果、人脸效果和世界效果 获得关于增强现实如何在网络浏览器中工作的基本理解 掌握使用WebXR、mind-ar-js和threejs构建web AR应用程序 学习使用…

umi脚手架搭建的项目_15天零成本搭建静态博客,托管于Github Page
博客地址技术栈概览前台:Umi(路由) Antd(视图) TypeScript(增加项目可维护性以及规范性)后台:Umi(路由) Antd(视图) TypeScript(增加项目可维护性以及规范性) Rematch(数据管理)服务:Egg.js(基于koa的下一代企业级应用框架) MongoDB搭建…

[maven] 使用问题及思考汇总
(1)Maven坐标 maven坐标可以唯一标识一个项目,包含四个元素 groupId , artifactId, packaging, version。 groupId:一般为团体,公司,项目。如 oceanic-web, oceanic-dal, oceanic-biz 同属一个 groupId。 artifactId:在…

VS调试时提示此项目已经过期
问题出因: 1.先前卸载VS重新安装时不全面 解决办法: 1.VS应安装两个C的组件 2.首先在“生成”-》 “生成解决方案”完成编译,问题解决。

(DBA之路【五】)关于锁的故事
首先很抱歉:这篇文章我其实整合了很多别人的文章,但是因为太多,一开始被没留意出处所以很难声明来源,很抱歉,但是这篇文章只用来作为学习笔记,作为新手,我以后会注意的。(一…
Android Studio Day03-1(Android studio 系统界面简介)
IDE(integrated Development Environment)的主要的目的就是用来编辑文本的。 在界面中的分布如下(以下的两张图片均为的《Android studio实战快速高效地构建Android应用》一书中的)

全流程游戏模型制作学习教程
尤金彼得罗夫|时长:36小时 |视频:H264 19201080 |音频:AAC 44,1 kHz 2ch |大小解压后 35 GB 含课程文件 |语言:英语 (无字幕,) 在本教程中,我将介绍为现代FPS视频游戏创建游戏就绪武器资产的整个过程。我将展示我的工作管道,使用…

requirednew基于xml配置日志不回滚_Elasticsearch配置IK分词器的远程词库
在生活中很多很多地方都涉及到了全文检索,最常见的就好比日常使用到的百度搜索等搜索引擎,也都是基于全文检索来实现的;全文检索种类较多,就好比Elasticsearch、Sorl等。为Ealsticsearch配置词库,可以很好的解决生活中…

PS切图篇(一)---界面设置
#工作区设置 四大主要面板:信息 字符 图层 历史记录 打开必要属性: 选择工具设置 选择图层的方式:ctrl鼠标左击想选择的图层转载于:https://www.cnblogs.com/yinzf/p/5339873.html
简单解决用VS编写hello world时命令行一闪而过
一、在return 0;前一行加一个getchar(); 二、使用项目模板为 windows 桌面向导 c 3、命令行控制台一闪而过。这是我们使用空文件夹加载的项目,默认不是控制台应用程序,新建控制台程序,或者在代码中加入system(“pause”);这种通过代码人为的…