Kel*_*vin 8 docker kubernetes asp.net-core-webapi docker-desktop .net-5
首先,这是我的文件夹:
这是我的 Dockerfile:
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "PlatformService.dll"]
Run Code Online (Sandbox Code Playgroud)
platforms-depl.yaml(部署文件)
apiVersion: apps/v1
kind: Deployment
metadata:
name: platforms-depl
spec:
replicas: 1
selector:
matchLabels:
app: platformservice
template:
metadata:
labels:
app: platformservice
spec:
containers:
- name: platformservice
image: hao14102000/platformservice:latest
Run Code Online (Sandbox Code Playgroud)
platforms-np-srv.yaml(NodePort 服务文件)
apiVersion: v1
kind: Service
metadata:
name: platformnpservice-srv
spec:
type: NodePort
selector:
app: platformservice
ports:
- name: platformservice
protocol: TCP
port: 80
targetPort: 80
Run Code Online (Sandbox Code Playgroud)
当我应用 2 个文件时,我看到的是:
31023当我尝试使用以下两个选项连接端口时:
http://localhost:31023/api/platforms
http://10.109.215.230:31023/api/platforms
Run Code Online (Sandbox Code Playgroud)
这不起作用。有时候是这样的:
我不知道这有什么问题...
Windows Docker Desktop 上的 Kubernetes 默认在 WSL2(Linux 的 Windows 子系统)中运行其组件,它是具有自己的 IP 地址和localhost. localhost这就是无法从主机操作系统(在本例中为 Windows)访问服务的原因。
using WSL2 based engine另一种选择是在设置中禁用,而是hyper-v使用并创建虚拟机,但在 Docker Desktop 中据说最好使用 WSL2 以获得性能优势。
设置一个servicewithLoadBalancer类型。EXTERNAL-IP将是 localhost,它会立即解决所有问题。例如:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11m
nginx LoadBalancer 10.110.15.53 localhost 8080:30654/TCP 4m10s
Run Code Online (Sandbox Code Playgroud)
Nginx 可在localhost:8080.
另一种选择是找到WSL虚拟机,然后访问该 IP 和 上的服务nodeport。
要查找 WSL VM 地址,您需要运行wsl命令连接到该 VM,然后查找其 IP 地址:
wsl
# ip a | grep eth0
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 172.19.xxx.yyy/20 brd 172.19.xxx.yyy scope global eth0
Run Code Online (Sandbox Code Playgroud)
Nginx 可在172.19.xxx.yyy:30654.
Port-forward对于测试目的很有用,但不应该在生产系统上使用。
要启动服务的代理,请运行以下命令:
kubectl port-forward service/nginx 8080:80 &
Run Code Online (Sandbox Code Playgroud)
Nginx 可在浏览器中使用localhost:8080
首先hyper-v应安装在主机上。请注意,并非所有版本的 Windows 都受支持。请参阅hyper-v 此处有关哪些版本以及如何启用的文档。
using WSL2 based engine取消选择时,hyper-v用于使用容器。它创建一个单独的虚拟机,可以在 中找到Hyper-v Manager。
nodeport在本地主机 + 节点端口上工作loadbalancer不起作用,localhost即使External-IP显示 ,您也无法连接到服务端口localhost。还可以在 Windows Docker Desktop 上运行 Windows 容器。
需要更改将使用的守护进程。在托盘中选择switch to Windows containers。在 Linux 和 Windows 容器之间切换。
但是,kubernetes该选项将变得不可用,因为control plane组件被设计为在linux主机上运行。
操作系统:Windows 10 企业版,内部版本:19041.1165
Docker 桌面:4.0.0 (67817)
引擎:20.10.8
库伯内特:1.21.4
| 归档时间: |
|
| 查看次数: |
2532 次 |
| 最近记录: |