0. 前提

关闭防火墙,禁用交换分区

  1. #关闭防火墙
  2. sudo ufw status
  3. #禁用交换分区swap
  4. sudo swapoff -a
  5. #进入fstab注释掉swap那一行
  6. vi /etc/fstab

1. 安装docker

更换国内软件源,原本使用清华的源,发现不能安装,换到中国科技大学的源

  1. sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. sudo sed -i 's/mirrors.tuna.tsinghua.edu.cn/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
  3. sudo apt update

image.png
安装需要的包

  1. sudo apt install apt-transport-https ca-certificates software-properties-common curl

PS:如果提示 “无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?”执行以下语句,若无忽略

  1. sudo rm /var/lib/dpkg/lock
  2. sudo rm /var/lib/dpkg/lock-frontend

image.png
添加 GPG 密钥,并添加 Docker-ce 软件源,这里还是以中国科技大学的 Docker-ce 源为例

  1. curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  2. sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

image.png
添加成功后更新软件包缓存

  1. sudo apt update

image.png
安装 Docker-ce

  1. sudo apt install docker-ce

image.png
设置开机自启动并启动 Docker-ce(安装成功后默认已设置并启动,可忽略)

  1. sudo systemctl enable docker
  2. sudo systemctl start docker

image.png
测试运行

  1. sudo docker run hello-world

image.png

2. 安装k8s

https://blog.csdn.net/zhangdongan1991/article/details/103440806
https://blog.csdn.net/wangkaizheng123/article/details/107491114
添加阿里云上k8s的源

  1. #使用root用户操作
  2. apt-get update && apt-get install -y apt-transport-https
  3. curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
  4. cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
  5. deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
  6. EOF
  7. apt-get update
  1. # 安装kube
  2. apt-get install -y kubelet=1.18.0-00 kubeadm=1.18.0-00 kubectl=1.18.0-00

注意:这里改成1.18.0版本是为kubeadm init做的需求,也可以不加版本号,直接apt-get install -y kubelet kubeadm kubectl,但是由于没有找到当前最新版本-1.18.6的kubeadm init需要的镜像,所以下载1.18.0版本。

启动master节点需要执行:kubeadm init —kubernetes-version=v1.18.0 —pod-network-cidr=10.10.0.0/16 —apiserver-advertise-address=192.168.0.188,但是由于“墙”,只能手动下载1.18.0的镜像。

查询需要的镜像:

  1. kubeadm config images list --kubernetes-version v1.18.0

image.png
拉取镜像:

  1. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0
  2. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0
  3. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0
  4. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0
  5. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
  6. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
  7. docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7

image.pngimage.png
给镜像改名:

  1. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0
  2. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0
  3. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0
  4. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
  5. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
  6. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
  7. docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

image.png
此时,镜像下载完成,可以启动master节点了

  1. # 192.168.1.8为本机ip
  2. kubeadm init --kubernetes-version=v1.18.0 --pod-network-cidr=10.10.0.0/16 --apiserver-advertise-address=192.168.1.8

得到下面代码,说明成功了,保存这条消息,其他节点加入时需要使用。

  1. kubeadm join 192.168.1.8:6443 --token npp8r6.ahu53pdms60bx3u7 \
  2. --discovery-token-ca-cert-hash sha256:3a5b066cffaf64f1383c779d9afdf467df0764adc78e5ac3c138616694c6940d

image.png
设置配置文件如下:

  1. mkdir -p /root/.kube
  2. cp -i /etc/kubernetes/admin.conf /root/.kube/config
  3. chown root:root /root/.kube/config

主节点生效

  1. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

提示出错,原因:外网不可访问
image.png
解决办法

  1. # 在https://www.ipaddress.com/查询raw.githubusercontent.com的真实IP,得到199.232.68.133
  2. sudo vim /etc/hosts
  3. 199.232.68.133 raw.githubusercontent.com

再次执行 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
image.png
查看状态,当看到状态是ready的时候,此时已经安装成功了

  1. kubectl get nodes

image.png