在 AKS 上创建 OpenStack CLI,如下所示:
$ kubectl create configmap openstack-rc-os-cli-0 --from-file=$OPENSTACK_RC
$OPENSTACK_RC 是一个包含下列内容的文件:
export OS_USERNAME="$OPENSTACK_USER"
export OS_PROJECT_NAME="$OPENSTACK_TENANT"
export OS_AUTH_URL="http://$DEVSTACK_PRIVATE_IP/identity"
export OS_PASSWORD="$OPENSTACK_PASS"
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_ID=default
然后:
$ kubectl create -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: os-cli-0
spec:
containers:
- name: openstack-cli
image: alpine
volumeMounts:
- name: openstack-rc-os-cli-0
mountPath: /openstack
command: ["/bin/sh"]
args:
- -c
- apk update && \
apk add python3 && \
apk add py3-pip && \
apk add python3-dev && \
apk add gcc && \
apk add musl-dev && \
apk add libffi-dev && \
apk add openssl-dev && \
pip3 install python-openstackclient && \
sh -c 'echo ". /openstack/openstack_rc" >> /root/.profile; while true; do sleep 60; done;'
restartPolicy: Never
volumes:
- name: openstack-rc-os-cli-0
configMap:
name: openstack-rc-os-cli-0
defaultMode: 0755
EOF
然后我部署了一些服务,一切都很顺利。
然后,我认为 Azure 花费太多钱来维持 AKS VM 的持续运行,因此停止了所有 VM。当我重新启动它们时,我的许多 pod 都无法正常启动。特别是,os-cli-0 pod 只显示“错误”:
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
os-cli-0 0/1 Error 0 9d <none> aks-nodepool1-39561274-1 <none> <none>
我查看了这个 Pod 的日志,除了我第一次构建它时的内容外,里面什么也没有。这让我相信虚拟机恢复后,这个 Pod 甚至从未尝试启动过。
Azure 报告称 AKS 运行正常,据我所知确实如此。问题似乎是 OpenStack 尚未正确重新启动。
我可能只是忽略了一些愚蠢的东西,我感谢任何帮助。