最详细的ubuntu安装Kubernetes(k8s)教程
运行kubeadm init时加上阿里云镜像的参数--image-repository=registry.aliyuncs.com/google_containers,如下:(版本改为自己需要的)Docker与WSL 2 子系统安装与使用指南_docker wsl2-CSDN博客。:如果 pause和etcd无法通过脚本生成 可以自行根据下列代码。#下载 Google Cloud 公开签名秘钥(#
安装docker
具体详情请可以参考这篇文章 Docker与WSL 2 子系统安装与使用指南_docker wsl2-CSDN博客https://blog.csdn.net/qq_46352005/article/details/131936074?spm=1001.2014.3001.5502
安装kubeadm、kubectl和kubelet
#更新apt源
sudo apt-get update
sudo apt-get upgrade
#下载 Google Cloud 公开签名秘钥(阿里云镜像):curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
#添加 Kubernetes apt 仓库(阿里云镜像):echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
#安装 kubelet、kubeadm 和 kubectl,并锁定其版本:
sudo apt update
sudo apt install -y --allow-downgrades kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00
sudo apt-mark hold kubelet kubeadm kubectl
问题
由于国内网络原因,kubeadm init会卡住不动,然后报出这种问题:
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.28.2: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解决方法
使用阿里云镜像
运行kubeadm init时加上阿里云镜像的参数--image-repository=registry.aliyuncs.com/google_containers,如下:(版本改为自己需要的)
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-netw
首先使用下面的命令获取需要的docker镜像名称:
kubeadm config images list
结果如以下:(版本改为自己需要的)
registry.k8s.io/kube-apiserver:v1.23.6
registry.k8s.io/kube-controller-manager:v1.23.6
registry.k8s.io/kube-scheduler:v1.23.6
registry.k8s.io/kube-proxy:v1.23.6
registry.k8s.io/pause:3.6
registry.k8s.io/etcd:3.5.1-0
registry.k8s.io/coredns/coredns:v1.8.6
注意:新版本的coredns改名了,变成了coredns/coredns,需要特殊处理,不放在脚本中
特殊处理:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.6
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.6 k8s.gcr.io/coredns/coredns:v1.8.6
docker rmi -f registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.6
然后开始编写脚本:
vim pull_k8s_images.sh
set -o errexit
set -o nounset
set -o pipefail
##这里定义版本,按照上面得到的列表自己改一下版本号
KUBE_VERSION=v1.23.6
KUBE_PAUSE_VERSION=3.6
ETCD_VERSION=3.5.1-0
# DNS_VERSION=1.23.6
##这是原始仓库名,最后需要改名成这个
GCR_URL=k8s.gcr.io
##这里就是写你要使用的仓库
DOCKERHUB_URL=gotok8s
##这里是镜像列表,新版本要把coredns需要特殊处理
images=(
kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
# coredns:${DNS_VERSION}
)
##这里是拉取和改名的循环语句
for imageName in ${images[@]} ; do
docker pull $DOCKERHUB_URL/$imageName
docker tag $DOCKERHUB_URL/$imageName $GCR_URL/$imageName
docker rmi $DOCKERHUB_URL/$imageName
done
然后授予执行权限
chmod +x ./pull_k8s_images.sh
执行:
./pull_k8s_images.sh
在 Master 节点下执行
kubeadm init \
--apiserver-advertise-address=8.134.159.177 \
--kubernetes-version v1.23.6 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
更多推荐
所有评论(0)