【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就行了![在这里插入图片描述](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集群相关推荐
- kubeadm部署K8S集群并使用containerd做容器运行时
kubeadm部署K8S集群并使用containerd做容器运行时(内容全部实战验证有任何问题欢迎留言咨询讨论) 前言 去年12月份,当Kubernetes社区宣布1.20版本之后会逐步弃用docke ...
- 《云原生之K8s实战》基于kubeadm部署K8S集群
目录 基于kubeadm部署K8S集群 一.环境准备 1.1.主机初始化配置 1.2.部署docker环境
- 【02】Kubernets:使用 kubeadm 部署 K8S 集群
写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...
- kubeadm部署k8s集群
1.准备环境 虚拟机操作系统: Centos7 角色 IP Master 192.168.150.140 Node1 192.168.150. ...
- kubeadm部署k8s集群最全最详细
一.安装要求 kubeadm安装kubernetes1.15 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 1.一台或多台机器(≥3奇数个),操作系统 CentOS7.x(最好是 ...
- Kubernetes 系列之 kubeadm 搭建k8s集群
Kubeadm 搭建k8s集群 注意:Kubernetes 系列 所采用的kuberntetes版本都是 1.15+ 1 Master 节点安装 1.1 系统环境配置 1.1.1 设置主机名称 hos ...
- 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)
系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...
- 2、使用 kubeadm 方式快速部署K8S集群
文章目录 一.kubernetes 官方提供的三种部署方式 二.使用kubeadm搭建k8s集群 2.1 基础环境设置 2.2 安装Docker 2.3 添加kubernetes软件源 2.4 安装k ...
- 使用Kubeadm创建k8s集群之节点部署(三十二)
前言 由于上次忘开申明原创,特再发一次. 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜 ...
最新文章
- 这几个超绝设计,谁看了不大喊一声“丑!!”
- quadTree 论文Real-Time Generation of Continuous吃透了
- vscode中go插件配置
- 分享一个引起极度舒适的工作桌面
- JS 构造图片Image对象
- 微软笔试题(看到的写答案啊)
- 立即表达式的多种写法与注意点以及in操作符的作用
- leetcode mysql 排名_GitHub - nimphy/leetcode-Mysql
- 第二章 面向对象的编程风格
- alibaba cloud sdk使用工作笔记0001---通过alibaba cloud sdk动态操作自己的阿里云产品,设置,或者查询信息
- python中ndarray对象实例化_Python —— 实例化ndarray对象
- XStream xml转java对象
- 圆排列问题详解(原理+代码)
- 系统架构师 项目经理 哪个更有前景_OLED和QLED电视有什么区别?哪个更好更有前景?...
- 动态贝叶斯网络推断函数的调用
- 文本文件和二进制文件的差异和区别
- android调用dll程序,安卓手机如何打开.dll文件?
- 面试时如何回答离开上家公司的原因?
- 我想起个公司名字,招投标行业的,快速搜索标讯的,科技公司,蓝色logo的
- 一个exe文件怎么运行起来的