k8s
一、部署:
照这个来,基本没问:https://www.cnblogs.com/yangzp/p/16911078.html
可能需要建一个storage class的存储才能跑起来,图省事,我用了localstorge:kubectl apply -f localstorage.yaml
要让kube-system和kube-flannel下的pod都要running才算完(kube-system 7个、flannel 2个)。
貌似有应对被墙的镜像代理服务,暂未调通。
二、坑:
- docker hub被ban,k8s创建pod几近残废。先拿到yaml文件,解析出需要的image,手工生成镜像并确保主机上的镜像跟yaml中的名字一致,再kubectl apply -f ***.yaml。
- 内网环境无法拉取镜像,需要设置docker代理(/etc/docker/daemon.json)。
- 比较麻烦的是flannel的docker镜像,因为docker hub不向国内开放,需要从github(https://github.com/flannel-io的flannel和cni-plugin)下,然后导入docker。flannel下载地址:https://github.com/flannel-io/flannel/releases/tag/v0.25.4(下载.docker文件)。插件镜像可以FQ从dockerhub上下载再过渡到服务器,而arm64版本的插件镜像更难,dockerhub上没有arm64的1.5.1版本镜像(flannel/flannel-cni-plugin:v1.5.1-flannel1),到目前还没搞定arm芯片主机用1.5.1版本做从节点加入集群。
- 从节点安装完kubelet三大组件,并加入主节点后,复制:cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- 从节点加入主节点时报not ready,通过kubectl describe node node02发现Conditions中有信息:“cni config uninitialized”,是因为flannel没装好。手工在从节点导入flannel的两个镜像后解决。
三、维护:
- pod如果是pending或其他的状态,应该核实问题。步骤:1、kubectl get pods -A查看pod状态。2、kubectl describe pod kube-flannel-ds-7lr6n -n kube-flannel,关注Events,其中就有原因,比如:Back-off pulling image "quay.io/coreos/flannel:v0.25.4