Ubuntu18.04 国内环境使用kubeadm安装kubernetes+docker(单机版)
阅读原文时间:2021年04月20日阅读:1

添加源,添加key,安装docker.io, kubelet, kubernetes-cni=0.6.0-00,和 kubeadm

先到/etc/apt/sources.list.d/文件夹中手动创建文件kubernetes.list,在该文件中添加(使用中科大的源,否则要翻墙,或者速度太慢):

http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main

然后更新:

sudo apt-get update

由于加了kubernetes源, 使用 apt-get update 命令会出现如下错误,原因是缺少相应的key,

Err:4 http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease    
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB

运行以下命令,添加错误中对应的key(错误中 NO_PUBKEY后面的key的后8位):

gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB

接着运行:

gpg --export --armor E084DAB9 | sudo apt-key add - 

返回OK,说明成功. 之后进行安装:

sudo apt-get install -y docker.io kubelet kubernetes-cni=0.6.0-00 kubeadm

关闭swap:

如果不关闭kubernetes运行会出现错误, 及时安装成功了,node重启后也会出现kubernetes server运行错误。

sudo swapoff -a #暂时关闭

使用docker pull k8s的相关镜像:

先运行以下命令,获取要pull的镜像列表:

kubeadm config images list

使用任意文本编辑器,写脚本批次pull,在文本中输入:

#! /bin/bash
images=(
    kube-apiserver:v1.12.2
    kube-controller-manager:v1.12.2
    kube-scheduler:v1.12.2
    kube-proxy:v1.12.2
    pause:3.1
    etcd:3.2.24
    coredns:1.2.2
)
 
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
done

其中docker tag用于标记本地镜像,将其归入某一仓库.

保存脚本k8s_cript后运行:

sudo chmod +x k8s_cript 

让其变得可执行,然后在当前文件夹运行:

./k8s_cript  即可.

初始化

先进入root 模式: sudo -i

初始化:

kubeadm init

——如果发现docker版本不合适,可能是因为docker版本太新(因为默认安装的是最新版本的docker,就要卸了docker重装版本支持的docker,注:Ubuntu里docker称作docker.io:

sudo apt-get autoremove docker.io

——如果出现“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”

执行以下命令:

systemctl unmask docker.service

systemctl unmask docker.socket

systemctl start docker.service

配置授权信息

init成功后,即master node初始化成功,成功后会提示一些操作.(如果失败,根据问题再做改进):

To start using your cluster, you need to run the following as a regular user:

即配置授权信息,主要是为了保存相关的配置信息在用户目录下,这样不用每次都输入相关的认证信息。

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

运行一些命令

查询nodes: kubectl get nodes

参考:https://zhuanlan.zhihu.com/p/46341911