浅入kubernetes(5) 尝试kubeadm

简介: 浅入kubernetes(5) 尝试kubeadm

命令行工具


主要有三个工具,命令行工具使用 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 initkubeadm 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 dockerdocker 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
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
590 33
|
9月前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
650 13
|
Kubernetes 网络虚拟化 Docker
K8S镜像下载报错解决方案(使用阿里云镜像去下载kubeadm需要的镜像文件)
文章提供了一个解决方案,用于在无法直接访问Google镜像仓库的情况下,通过使用阿里云镜像来下载kubeadm所需的Kubernetes镜像。
1129 4
K8S镜像下载报错解决方案(使用阿里云镜像去下载kubeadm需要的镜像文件)
|
11月前
|
Kubernetes Linux 开发工具
centos7通过kubeadm安装k8s 1.27.1版本
centos7通过kubeadm安装k8s 1.27.1版本
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
318 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
Kubernetes Ubuntu 网络安全
Ubuntu基于kubeadm快速部署K8S实战
关于如何在Ubuntu系统上使用kubeadm工具快速部署Kubernetes集群的详细实战指南。
559 3
|
Kubernetes 负载均衡 应用服务中间件
kubeadm快速构建K8S1.28.1高可用集群
关于如何使用kubeadm快速构建Kubernetes 1.28.1高可用集群的详细教程。
393 3
|
Kubernetes 安全 持续交付
在K8S中,二进制安装和Kubeadm安装有什么区别?
在K8S中,二进制安装和Kubeadm安装有什么区别?
|
Kubernetes 安全 搜索推荐
在K8S中,二进制与Kubeadm安装有何区别?
在K8S中,二进制与Kubeadm安装有何区别?
|
Kubernetes 负载均衡 应用服务中间件
使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix
使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix
301 0

推荐镜像

更多