准备工作
预留2G左右的内存,尽可能多,需要提前安装了docker
- kubeadm:用来初始化集群的指令。
- kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
- kubectl:用来与集群通信的命令行工具。
集群安装,但只有一个节点
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
配置Docker源
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
其中 https://xxxxxxxx.mirror.aliyuncs.com 为阿里云镜像加速地址, xxxxxxxx 需要替换为自己账户中的地址。阿里云 -> 容器镜像服务 -> 镜像工具 -> 镜像加速器
添加k8s源
vim /etc/yum.repos.d/kubernetes.repo
内容为
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kube*
安装
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet && systemctl start kubelet
初始化Master节点
生成初始化文件
kubeadm config print init-defaults > kubeadm-init.yaml
该文件有两处需要修改:
- 将advertiseAddress: 1.2.3.4修改为本机地址(腾讯云内网地址)
- 将imageRepository: k8s.gcr.io修改为imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
下载镜像
kubeadm config images list # 查看需要的镜像
结果为
registry.k8s.io/kube-apiserver:v1.26.0
registry.k8s.io/kube-controller-manager:v1.26.0
registry.k8s.io/kube-scheduler:v1.26.0
registry.k8s.io/kube-proxy:v1.26.0
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.6-0
registry.k8s.io/coredns/coredns:v1.9.3
使用shell脚本来下载镜像
images=(
kube-apiserver:v1.26.0
kube-controller-manager:v1.26.0
kube-scheduler:v1.26.0
kube-proxy:v1.26.0
pause:3.9
etcd:3.5.6-0
coredns:v1.9.3
)
for imageName in ${images[*]}
do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
docker tag k8s.gcr.io/coredns:v1.9.3 k8s.gcr.io/coredns/coredns:v1.9.3
docker rmi k8s.gcr.io/coredns:v1.9.3
从阿里云镜像仓库下载,并重命名为原来的名字,对coredns要特殊处理一下
执行初始化
kubeadm init --config kubeadm-init.yaml
卡在这了,暂时未找到原因。
参考
Kubernetes(一) 跟着官方文档从零搭建K8S
Kubeadm-官方文档