安装过程中的问题
https://kubernetes.io/docs/setup/independent/install-kubeadm/
官网ubuntu安装命令
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
1、源问题
此处kubernetes的源 我选择的ustc源
因此/etc/apt/sources.list.d/kubernetes.list文件需要添加(ubuntu16.04 代号为xenial),
deb https://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
软件源更改 /etc/apt/sources.list
# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse#
预发布软件源,不建议启用# deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
2、swap问题
kubernetes需要关闭swap
swapoff -a
同时把/etc/fstab包含swap那行记录删掉。
3、image问题
安装好kubectl,kubeadm,kubelet之后,使用kubectl init进行初始化,初始化的时候默认使用国外的镜像。
因此可以使用kubeadm config images lsit --kunernetes-version v1.12.2(自己的版本号)查看k8s都需要那些image,可以事先使用国内能访问的网站下载下来
使用kubeadm初始化的时候无法拉取镜像
推荐使用anjia0532的镜像,机器人自动跟官方同步,非常及时。
docker pull anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2
docker pull anjia0532/google-containers.kube-apiserver-amd64:v1.11.2
docker pull anjia0532/google-containers.kube-scheduler-amd64:v1.11.2
docker pull anjia0532/google-containers.kube-proxy-amd64:v1.11.2
docker pull anjia0532/google-containers.pause:3.1
docker pull anjia0532/google-containers.etcd-amd64:3.2.18
docker pull anjia0532/google-containers.coredns:1.1.3
然后重新tag
docker tag anjia0532/google-containers.kube-controller-manager-amd64:v1.11.2 k8s.gcr.io/kube-controller-manager-amd64:v1.11.2
docker tag anjia0532/google-containers.kube-apiserver-amd64:v1.11.2 k8s.gcr.io/kube-apiserver-amd64:v1.11.2
docker tag anjia0532/google-containers.kube-scheduler-amd64:v1.11.2 k8s.gcr.io/kube-scheduler-amd64:v1.11.2
docker tag anjia0532/google-containers.kube-proxy-amd64:v1.11.2 k8s.gcr.io/kube-proxy-amd64:v1.11.2
docker tag anjia0532/google-containers.pause:3.1 k8s.gcr.io/pause:3.1
docker tag anjia0532/google-containers.etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18
docker tag anjia0532/google-containers.coredns:1.1.3 k8s.gcr.io/coredns:1.1.3
再删掉原来的image
docker rmi [imagename]
4、join加入master时的问题
因为我的测试机时克隆的,所以3个主机名字是一样的,加入的时候
kubeadm join IP:6443 --token xuzad4.qkfdi57gal2bkobo
在master上 kubectl get nodes 看不到加入的节点,发现问题的原因是主机名相同,修改主机名,Ubuntu修改方法 编辑/etc/hostname
修改完成之后使用kubeadm reset在节点主机上使用,重置,然后在使用kubeadm join命令,加入成功。
5、join之后各节点需要运行一些组件
kubectl get nodes
可以查看到现有的节点仍处于not ready状态,当各节点需要运行的组件都启动正常之后会变为ready状态
可以通过
kubectl get pod --all-namespaces
查看组件启动情况,若有组件未启动成功,可以使用
kubectl describe pod (上一命令查到的NAME) --namespace=kube-system
节点在ready的时候会创建一些容器,需要上边列出的7个image中的一些,所以在节点机器上也要下载部分第3部中的image