一 . 准备机器
本次环境采用华为云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就行了![在这里插入图片描述](https://img−blog.csdnimg.cn/20210128105702748.png)可以发现当前节点状态NotReady状态使用下面命令查看kubelet日志,看到网络插件没有安装journalctl−f−ukubelet![在这里插入图片描述](https://img−blog.csdnimg.cn/2021012810571023.png)执行下面命令安装weave插件kubectlapply−fhttps://cloud.weave.works/k8s/net?k8s−version=HOME/.kube/config 再次执行kubectl get nodes 就行了 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128105702748.png) 可以发现当前节点状态NotReady状态 使用下面命令查看kubelet日志,看到网络插件没有安装 journalctl -f -u kubelet ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012810571023.png) 执行下面命令安装weave插件 kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=HOME/.kube/config再次执行kubectlgetnodes就行了![在这里插入图片描述](https://img−blog.csdnimg.cn/20210128105702748.png)可以发现当前节点状态NotReady状态使用下面命令查看kubelet日志,看到网络插件没有安装journalctl−f−ukubelet![在这里插入图片描述](https://img−blog.csdnimg.cn/2021012810571023.png)执行下面命令安装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![在这里插入图片描述](https://img−blog.csdnimg.cn/20210128105741678.png)安装weave:kubectlapply−f"https://cloud.weave.works/k8s/net?k8s−version=HOME/.kube/config ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128105741678.png) 安装weave: kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=HOME/.kube/config![在这里插入图片描述](https://img−blog.csdnimg.cn/20210128105741678.png)安装weave:kubectlapply−f"https://cloud.weave.works/k8s/net?k8s−version=(kubectl version | base64 | tr -d ‘\n’)"

5、查看node节点状态,部署完成。

【Kubernetes】如何使用Kubeadm部署K8S集群相关推荐

  1. kubeadm部署K8S集群并使用containerd做容器运行时

    kubeadm部署K8S集群并使用containerd做容器运行时(内容全部实战验证有任何问题欢迎留言咨询讨论) 前言 去年12月份,当Kubernetes社区宣布1.20版本之后会逐步弃用docke ...

  2. 《云原生之K8s实战》基于kubeadm部署K8S集群

    目录 基于kubeadm部署K8S集群 一.环境准备 1.1.主机初始化配置 1.2.部署docker环境

  3. 【02】Kubernets:使用 kubeadm 部署 K8S 集群

    写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...

  4. kubeadm部署k8s集群

    1.准备环境 虚拟机操作系统: Centos7 角色                IP Master        192.168.150.140 Node1        192.168.150. ...

  5. kubeadm部署k8s集群最全最详细

    一.安装要求 kubeadm安装kubernetes1.15 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 1.一台或多台机器(≥3奇数个),操作系统 CentOS7.x(最好是 ...

  6. Kubernetes 系列之 kubeadm 搭建k8s集群

    Kubeadm 搭建k8s集群 注意:Kubernetes 系列 所采用的kuberntetes版本都是 1.15+ 1 Master 节点安装 1.1 系统环境配置 1.1.1 设置主机名称 hos ...

  7. 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)

    系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...

  8. 2、使用 kubeadm 方式快速部署K8S集群

    文章目录 一.kubernetes 官方提供的三种部署方式 二.使用kubeadm搭建k8s集群 2.1 基础环境设置 2.2 安装Docker 2.3 添加kubernetes软件源 2.4 安装k ...

  9. 使用Kubeadm创建k8s集群之节点部署(三十二)

    前言 由于上次忘开申明原创,特再发一次. 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜 ...

最新文章

  1. 这几个超绝设计,谁看了不大喊一声“丑!!”
  2. quadTree 论文Real-Time Generation of Continuous吃透了
  3. vscode中go插件配置
  4. 分享一个引起极度舒适的工作桌面
  5. JS 构造图片Image对象
  6. 微软笔试题(看到的写答案啊)
  7. 立即表达式的多种写法与注意点以及in操作符的作用
  8. leetcode mysql 排名_GitHub - nimphy/leetcode-Mysql
  9. 第二章 面向对象的编程风格
  10. alibaba cloud sdk使用工作笔记0001---通过alibaba cloud sdk动态操作自己的阿里云产品,设置,或者查询信息
  11. python中ndarray对象实例化_Python —— 实例化ndarray对象
  12. XStream xml转java对象
  13. 圆排列问题详解(原理+代码)
  14. 系统架构师 项目经理 哪个更有前景_OLED和QLED电视有什么区别?哪个更好更有前景?...
  15. 动态贝叶斯网络推断函数的调用
  16. 文本文件和二进制文件的差异和区别
  17. android调用dll程序,安卓手机如何打开.dll文件?
  18. 面试时如何回答离开上家公司的原因?
  19. 我想起个公司名字,招投标行业的,快速搜索标讯的,科技公司,蓝色logo的
  20. 一个exe文件怎么运行起来的

热门文章

  1. 2022-2028年中国康养旅游行业市场竞争力分析及发展策略分析报告
  2. 使用 Go module 后 VScode 智能提示不生效解决方案
  3. OpenCV 笔记(01)— OpenCV 概念、整体架构、各模块主要功能
  4. 记录一次简单、高效、无错误的linux上安装pytorch的过程
  5. 做人留一线,日后好相见
  6. 汇编语言中寻址方式[bx + idata]
  7. 嵌入式Linux的OTA更新,基础知识和实现
  8. 自然语言推理:使用注意力机制
  9. 可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读
  10. ADAS感知算法观察