0. 前提
关闭防火墙,禁用交换分区
#关闭防火墙
sudo ufw status
#禁用交换分区swap
sudo swapoff -a
#进入fstab注释掉swap那一行
vi /etc/fstab
1. 安装docker
更换国内软件源,原本使用清华的源,发现不能安装,换到中国科技大学的源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/mirrors.tuna.tsinghua.edu.cn/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update
安装需要的包
sudo apt install apt-transport-https ca-certificates software-properties-common curl
PS:如果提示 “无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?”执行以下语句,若无忽略
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
添加 GPG 密钥,并添加 Docker-ce 软件源,这里还是以中国科技大学的 Docker-ce 源为例
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
添加成功后更新软件包缓存
sudo apt update
安装 Docker-ce
sudo apt install docker-ce
设置开机自启动并启动 Docker-ce(安装成功后默认已设置并启动,可忽略)
sudo systemctl enable docker
sudo systemctl start docker
测试运行
sudo docker run hello-world
2. 安装k8s
https://blog.csdn.net/zhangdongan1991/article/details/103440806
https://blog.csdn.net/wangkaizheng123/article/details/107491114
添加阿里云上k8s的源
#使用root用户操作
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
# 安装kube
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的镜像。
查询需要的镜像:
kubeadm config images list --kubernetes-version v1.18.0
拉取镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
给镜像改名:
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7
此时,镜像下载完成,可以启动master节点了
# 192.168.1.8为本机ip
kubeadm init --kubernetes-version=v1.18.0 --pod-network-cidr=10.10.0.0/16 --apiserver-advertise-address=192.168.1.8
得到下面代码,说明成功了,保存这条消息,其他节点加入时需要使用。
kubeadm join 192.168.1.8:6443 --token npp8r6.ahu53pdms60bx3u7 \
--discovery-token-ca-cert-hash sha256:3a5b066cffaf64f1383c779d9afdf467df0764adc78e5ac3c138616694c6940d
设置配置文件如下:
mkdir -p /root/.kube
cp -i /etc/kubernetes/admin.conf /root/.kube/config
chown root:root /root/.kube/config
主节点生效
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
提示出错,原因:外网不可访问
解决办法
# 在https://www.ipaddress.com/查询raw.githubusercontent.com的真实IP,得到199.232.68.133
sudo vim /etc/hosts
199.232.68.133 raw.githubusercontent.com
再次执行 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
查看状态,当看到状态是ready的时候,此时已经安装成功了
kubectl get nodes