在研究k8s的过程中,需要部署ingress-nginx,在搜索了一些教程,并准备跟着做的时候,发现教程中用到的一些Deployment文件都已经无法访问,于是根据地址转到k8s的git仓库,发现就在几天前,k8s发部了新版v0.35.0,并且把原来的部署文件从deploy目录下移走了,并且新目录下只有说明,没有部署文件了。
(原部署目录图)
(新部署目录图)
之前没有用过ingress-nginx,我也不知道什么移的,但是那些yml文件确实不在这儿了,那么之前的教程就没有用了,于是就重新搜索新版本的部署教程,确实没有找到,只好直接看开发git里的Installation Guide了,
(Installation Guide的目录图)
看完目录一脸懵bee啊,我的测试机是三台centos虚拟机,不知道要对应哪一个教程,不会不会不会啊(小白发自内心的呐喊)。
根据之前了解到的一些情况,知道Helm是k8s的配置管理工具,可以用到部署应用程序,但是,比如Azure的部署命令是这样的
·
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.35.0/deploy/static/provider/cloud/deploy.yaml
·
而 Helm的部署命令是这样的:
`
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install my-release ingress-nginx/ingress-nginx
`
存在很大区别,可以看出来在目录中的其它系统或者云平台,部署都是直接采用部署文件的,而没有提供私有虚机的部署文件,也许上面云平台的部署也可以用,但我不确定,因为之前的k8s刚崩溃一次,所以不敢尝试。
于是又去寻找Helm的安装说明,好在比较简单:
`
Every release of Helm provides binary releases for a variety of OSes. These binary versions can be manually downloaded and installed.
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
)helm
binary in the unpacked directory, and move it to its desired destination (mv linux-amd64/helm /usr/local/bin/helm
)`
直接下载,然后解压出来,把helm文件放到/usr/local/bin/目录下面就可以了。
接下来运行helm来部署ingress-nginx,首先是添加仓库:
`
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
`
又出错了,说地址不可访问,不是有效仓库之类的错误。到git社区反馈,热心的开发人员说I cannot reproduce this issue.但是他提醒我是不是用了代理。虽然我没有用代理,但是我还是决定要检查一下域名的ip是多少,一查还真的有问题,用nslookup检查域名 kubernetes.github.io返回的是127.0.0.1,看来问题就在这儿。继续检查,在其它的电脑上拿到的域名ip是正确的,在这台主机上用其它的域名解析服务器也是正确的。
莫名其妙的情况下,就考虑修改域名解析服务器,折腾了关天,都没有起效。不知道是不是天翼云的环境做了什么手脚,因为他用的一个私网的域名解析服务器。无奈重启主机,重启后居然正常了,虽然默认的域名解析服务器还是天翼云里的私网IP,100开头的一个IP地址。于是重新执行命令,成功。(这个后来又出现了一次,无奈,最后把域名的真实IP填入了hosts文件)。
接下来运行
·
helm install my-release ingress-nginx/ingress-nginx
·
成功?是的运行是成功的,但是到k8s的仪表盘上可以看到是红红的错误,pod并没有正常运行,检查详情发现是一个镜像无法下载:k8s.gcr.io/ingress-nginx/controller:v0.35.0
本来通过一台外网的主机拉取镜像后,导出并下截到本地导入,然后通过docker tag 修改镜像标签,并且修改deployment里的配置,把imagePullPolicy改为Never,从而让安装程序从本地接取镜像,但是并没有起到效果。
只能为docker配置了代理,使其能正常访问镜像仓库:
`
mkdir /etc/systemd/system/docker.service.d
cd /etc/systemd/system/docker.service.d/
cat 'EOF'>http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:1080/" "HTTPS_PROXY=http://127.0.0.1:1080/" "NO_PROXY=localhost,127.0.0.1,f1791z1h.mirror.aliyuncs.com"
EOF
systemctl daemon-reload
systemctl restart docker
`
总算安装完成,基本上一步一坑,特此记录。