使用 KOPS 在 AWS 上部署 k8s。我已经创建了 nginx 入口https://github.com/kubernetes/ingress-nginx nginx-ingress-controller 图像:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.18.0
一切都已启动并正在运行,我可以使用由 nginx 服务创建的 aws 经典负载均衡器从外部访问应用程序。
最近我们开始研究 websockets。我在 k8s 中部署了我的服务并尝试从外部访问。
我为我的应用程序创建了服务和入口。Ingress 现在指向负载均衡器(在 json 文件下方)。
我在 aws 中创建了 route53 条目并尝试连接到该条目,但是当我尝试通过 chrome 浏览器从我的客户端应用程序连接时出现以下错误
WebSocket 连接到“wss://blockchain.aro/socket.io/?EIO=3&transport=websocket”失败:WebSocket 握手期间出错:意外响应代码:400
我尝试创建应用程序负载均衡器,但无法连接到 wss://<host>
错误:
WebSocket 连接到“wss://blockchain.aro/socket.io/?EIO=3&transport=websocket”失败:WebSocket 握手期间出错:意外响应代码:400
const config: SocketIoConfig = { url: 'wss://blockchain.aro',
options: { autoConnect: false, transports: ['websocket']} };
Ingress:
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"extensions/v1beta1\",\"kind\":\"Ingress\",\"metadata\":{\"annotations\":{},\"name\":\"blockchain\",\"namespace\":\"adapt\"},\"spec\":{\"rules\":[{\"host\":\"blockchain.aro\",\"http\":{\"paths\":[{\"backend\":{\"serviceName\":\"blockchain\",\"servicePort\":8097},\"path\":\"/\"},{\"backend\":{\"serviceName\":\"blockchain\",\"servicePort\":8097},\"path\":\"/socket.io\"},{\"backend\":{\"serviceName\":\"blockchain\",\"servicePort\":8097},\"path\":\"/ws/\"}]}}],\"tls\":[{\"hosts\":[\"blockchain.aro\"],\"secretName\":\"blockchain-tls-secret\"}]}}\n",
"nginx.ingress.kubernetes.io/proxy-read-timeout": "3600",
"nginx.ingress.kubernetes.io/proxy-send-timeout": "3600"
}
Run Code Online (Sandbox Code Playgroud)
包含tls和secretname和rules在入口文件中。我尝试创建,ApplicationLoadbalancer但我也无法与之建立联系。
我的 k8s 集群最初有 2node 和 1master,我使用 3pod 部署了 statefulset,因此带有 PVC 的 3pod 在 2 个节点上运行。现在我将节点从 2 个增加到 3 个。所以现在 k8s 是 3nodes 和 1master。我想将其中一个有状态 pod 移动到新添加的节点而不删除 PVC,以便 3 个 pod 将分布在每个 3 个节点上。我尝试删除 pod,但它在同一节点上创建,而不是在新节点上创建(这是预期的)。谁能告诉我是否可以将一个 Pod 移动到另一个节点而不删除 PVC?这是可以实现的吗?或任何替代解决方案,因为我不想删除 PVC。
kubernetes kubernetes-pvc kubernetes-statefulset kubernetes-pod