在Kubernetes1.11.2上,使用Ubuntu 18.04+JupyterHub出现jupyterhub_cookie_secret没法写入的错误。python
JupyterHub的Hub Pod启动失败,查看日志以下:git
[I 2018-08-12 10:27:52.280 JupyterHub app:1656] Using Authenticator: dummyauthenticator.dummyauthenticator.DummyAuthenticator [I 2018-08-12 10:27:52.280 JupyterHub app:1656] Using Spawner: kubespawner.spawner.KubeSpawner [I 2018-08-12 10:27:52.281 JupyterHub app:1053] Writing cookie_secret to /srv/jupyterhub/jupyterhub_cookie_secret [E 2018-08-12 10:27:52.281 JupyterHub app:1941] Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/jupyterhub/app.py", line 1938, in launch_instance_async await self.initialize(argv) File "/usr/local/lib/python3.6/dist-packages/jupyterhub/app.py", line 1662, in initialize self.init_secrets() File "/usr/local/lib/python3.6/dist-packages/jupyterhub/app.py", line 1055, in init_secrets with open(secret_file, 'w') as f: OSError: [Errno 22] Invalid argument: '/srv/jupyterhub/jupyterhub_cookie_secret'
经初步测试,这是Ubuntu操做系统和Kubernetes新版本升级后所致,升级NFS的服务Pod便可。github
将NFS-provisioner的Images设为最新的版本v2.1.0-k8s1.11,获取镜像:docker
docker pull quay.io/kubernetes_incubator/nfs-provisioner:v2.1.0-k8s1.11
若是访问有问题,能够从阿里云上获取镜像的拷贝:cookie
MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/openthings docker pull ${MY_REGISTRY}/quay-io-nfs-provisioner:v2.1.0-k8s1.11 docker tag ${MY_REGISTRY}/quay-io-nfs-provisioner:v2.1.0-k8s1.11 quay.io/kubernetes_incubator/nfs-provisioner:v2.1.0-k8s1.11
编辑NFS服务的statefull-set的启动参数:app
获取sts(Stateful Sets) id kubectl get sts -n nfs #编辑images参数,设为v2.1.0-k8s1.11 kubectl edit sts/nfs-server-nfs-server-provisioner -n nfs #按i进行编辑,按esc : w保存,按:q退出。 #查看 kubectl describe sts/nfs-server-nfs-server-provisioner -n nfs
而后,删除pod,等kubernetes 自动重建pod后,刷新pod状态变绿,应该就能够正常使用了。async
到原来的Data8(基于JupyterHub的部署)查看pv,已经状态显示为绿色,可使用。测试
而后从新部署IPFS为NFS存储方式,发现pvc一直处于pending状态。建立一个新的pvc测试一下,也是如此。通过屡次测试发现,新的这个NFS部署放在default命名空间没有问题,其它的就会有问题。须要进一步测试和改进。阿里云
通过排查,问题发现主要是命名空间和访问权限致使建立pv失败。NFS-provisioner的原始实如今 https://github.com/openthings/external-storage/tree/master/nfs ,其中deploy/kubernetes目录包含部署用的配置文件,解决办法以下:spa
而后,运行安装脚本install-dep.sh(部署为deployment),内容以下:
kubectl create ns nfs2x kubectl apply -f deployment.yaml kubectl apply -f class.yaml kubectl apply -f rbac.yaml
而后,建立pvc:
kubectl apply -f claim.yaml
目前上面的解决办法是采用yaml文件使用kubectl部署的,之后应改进、更新helm chart的部署,以及支持GitOps的部署管理方法。