使用kubeadm命令行工具创建kubernetes集群


Posted in Servers onMarch 31, 2022

命令行工具

主要有三个工具,命令行工具使用 kube 前缀命名。

  • kubeadm:用来初始化集群的指令。
  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
  • kubectl:用来与集群通信的命令行工具。

通过软件仓库安装

方法 ①

此方法是通过 Google 的源下载安装工具包。

更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

下载 Google Cloud 公开签名秘钥:

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

添加 Kubernetes apt 仓库:

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本:

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

方法 ②

通过阿里云的源下载安装工具包。

通过命令直接添加源。

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add

然后更新软件源并安装这三个工具。

apt-get update && apt-get install -y apt-transport-https curl
apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated

执行命令检查是否正常:

kubeadm --help

二进制文件下载安装

查看 kubectl 最新稳定版本:

curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt

笔者当前查询到的稳定版本是 v1.20.2。

下载 kubectl 可执行文件,可替换 URL 中的版本号。

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.2/bin/linux/amd64/kubectl

下载后,目录可以看到一个 kubectl 文件,40MB 大小,国内下载速度稍慢,有可能无法下载,做好心理准备。

然后需要为其赋予可执行文件权限。

sudo chmod +x ./kubectl

为了可以直接使用 kubectl ,可以将文件复制到 bin 目录。

sudo mv ./kubectl /usr/local/bin/kubectl

执行命令输出版本号,检查是否安装成功。

kubectl version --client

输出:

Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

ubutu & centos 快速安装

只是这里介绍一下 ubuntu 和 centos 不同的安装方法,已经通过前面的安装方法安装好,则不需要理会这一小节。

Ubuntu 和 Debain 等系统可以使用以下命令通过软件仓库安装:

sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

Centos、RHEL 等系统可以使用以下命令通过软件仓库安装:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet kubeadm kubectl

创建 kubernetes 集群

前面介绍了如何按照这三个工具,如果你没有服务器,我们可以使用开源组织提供的线上服务器进行测试。

地址:https://katacoda.com/

我们在第一个 node 中操作,创建 master。执行 hostname -i 查看此 node 的 ip。

Kubeadm 是一个提供了 kubeadm init 和 kubeadm join 的工具,作为创建 Kubernetes 集群的 “快捷途径” 的最佳实践。

1,创建 Master

我们初始化一个 API Server 服务,绑定地址为 192.168.0.8(按照你的ip改)。此步骤创建了一个 master 节点。

注:可以直接使用 kubeadm init,它会自动使用默认网络ip。

kubeadm init --apiserver-advertise-address 192.168.0.8

完成后,会提示:

kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \
	--discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64

保存下来,后面备用。

如果有提示 Alternatively, if you are the root user, you can run:则你还需要执行下面的命令。

export KUBECONFIG=/etc/kubernetes/admin.conf

2,然后初始化集群网络。

接着执行初始化命令处理配置。注意,需要 admin.conf 才能执行命令,否则会报 The connection to the server localhost:8080 was refused - did you specify the right host or port? 。

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

然后执行这个命令初始化。

kubectl apply -n kube-system -f  "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

成功的话会提示:

serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created

3,加入集群

再创建一个新的节点(另一台服务器),执行 hostname -i 查看 ip。

在第二个节点中,执行命令,加入集群。请替换命令中的 192.168.0.8 为正确的 master 节点 的 ip。

kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \
	--discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64

接着新建第二第三个 node,执行上面的 kubeadm join 命令,加入集群。

如果出现 failed to parse kernel config: unable to load kernel module,说明 docker 版本太高,需要降级。

查看 docker 版本:yum list installed | grep docker 和 docker version

降级 docker 版本。

dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
dnf -y install dnf-plugins-core
dnf install docker-ce-18.06.3.ce-3.el7 docker-ce-cli containerd.io

不行的话就按照 https://docs.docker.com/engine/install/centos/ 安装。

注意,docker version 会看到 client 和 server 版本,两者的版本号可能不一致。

清除环境

如果步骤做错了或者想重来,可以执行 kubeadm reset [flags] 命令。

注:只执行 kubeadm reset 命令无效。

[flags] 有四种类型:

preflight              Run reset pre-flight checks
update-cluster-status  Remove this node from the ClusterStatus object.
remove-etcd-member     Remove a local etcd member.
cleanup-node           Run cleanup node.

我们需要执行:

kubeadm reset cleanup-node 
kubeadm reset

到此这篇关于使用kubeadm命令行工具创建kubernetes集群的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Servers 相关文章推荐
nginx实现发布静态资源的方法
Mar 31 Servers
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 Servers
苹果M1芯片安装nginx 并且部署vue项目步骤详解
Nov 20 Servers
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
Feb 12 Servers
Vertica集成Apache Hudi重磅使用指南
Mar 31 Servers
Nginx禁止ip访问或非法域名访问
Apr 07 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
Apache POI操作批量导入MySQL数据库
Jun 21 Servers
Fluentd搭建日志收集服务
Sep 23 Servers
nginx sticky实现基于cookie负载均衡示例详解
Dec 24 Servers
Minikube搭建Kubernetes集群
Apache Pulsar结合Hudi构建Lakehouse方案分析
Apache Hudi的多版本清理服务彻底讲解
Z-Order加速Hudi大规模数据集方案分析
Mar 31 #Servers
深入解析Apache Hudi内核文件标记机制
Apache Hudi数据布局黑科技降低一半查询时间
Apache Hudi集成Spark SQL操作hide表
You might like
浅析php header 跳转
2013/06/17 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
JavaScript 参考教程
2006/12/29 Javascript
Prototype中dom对象方法汇总
2008/09/17 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
Python牛刀小试密码爆破
2011/02/03 Python
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
python创建n行m列数组示例
2019/12/02 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
详解python的变量缓存机制
2021/01/24 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
2015年元旦活动总结
2014/05/09 职场文书
拓展训练激励口号
2014/06/17 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
同意报考证明
2015/06/17 职场文书
检讨书格式
2019/04/25 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server