kind: DaemonSet
metadata:
name: kube-flannel-ds-windows
namespace: kube-flannel
spec:
selector:
matchLabels:
app: flannel
tier: node
template:
metadata:
labels:
app: flannel
tier: node
spec:
hostNetwork: true
serviceAccountName: flannel
nodeSelector:
kubernetes.io/os: windows
containers:
name: kube-flannel
image: flannelcni/flannel:v0.22.0
command:
powershell
args:
-command
# Windows节点的Flannel配置脚本
volumeMounts:
name: kube-proxy
mountPath: /etc/kube-proxy
volumes:
name: kube-proxy
configMap:
name: kube-proxy-windows
此YAML文件定义了在Windows节点上运行Flannel网络插件的DaemonSet,它为Windows Pod提供网络连接。
运行你的第一个Windows容器
当集群就绪后,就可以通过编写Pod清单来部署Windows容器了。关键在于在YAML中指定正确的节点选择器。

apiVersion: v1
kind: Pod
metadata:
name: iis-pod
spec:
containers:
name: iis
image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
resources:
limits:
memory: "512Mi
cpu: "500m
nodeSelector:
kubernetes.io/os: windows
这个Pod清单定义了一个运行IIS的Windows容器,并通过nodeSelector确保它只会被调度到Windows节点上运行。
使用kubectl apply -f iis-pod.yaml创建Pod后,可以通过kubectl get pods -o wide查看其状态和所在节点,确认它已在Windows节点上成功启动。
优势、挑战与最佳实践
优势:
- 统一管理:通过单一的Kubernetes控制平面管理所有容器,简化运维。
- 资源优化:利用Linux作为高效的控制平面,节省资源。
- 混合应用支持:完美支撑既有Linux微服务又有遗留Windows应用的现代化改造。
挑战与注意事项:
- 镜像兼容性:Windows容器镜像必须与节点宿主机的Windows版本匹配(如ltsc2022)。
- 资源开销:Windows Server和Windows容器本身的内存占用通常高于Linux。
- 网络复杂性:跨操作系统的网络配置需要更细致的规划。
最佳实践:
- 始终在Pod定义中使用
nodeSelector明确指定调度目标。 - 为Windows节点打上自定义标签,以便进行更精细的调度控制。
- 定期关注和更新Kubernetes及Windows节点的补丁版本,确保安全与稳定。
总结与展望
在Linux服务器环境中运行Windows容器,通过Kubernetes这一"粘合剂"已成为一种可行且日益成熟的方案。它打破了操作系统的壁垒,为企业提供了前所未有的部署灵活性。虽然该方案在部署和运维上存在一定的复杂度,但其带来的统一管理、资源整合和业务连续性价值是显而易见的。随着容器生态的持续发展,未来这种混合运行模式将会变得更加平滑和高效。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/134540.html