默認情況下,參考:
https://docs.microsoft.com/en-us/virtualization/windowscontainers/kubernetes/creating-a-linux-master
基於上述方法,採用kubespray進行優化
1. 首先修改如下文件:
inventory/your_name/group_vars/k8s-cluster/k8s-cluster.yml
修改:kube_network_plugin: flannel
2. 檢查如下文件:
roles/network_plugin/flannel/defaults/main.yml
確保:flannel_backend_type: "vxlan"
3. 執行如下命令,修改網絡配置
vi roles/network_plugin/flannel/templates/cni-flannel.yml.j2
主要將"name":"cni0"修改爲vxlan0:
cni-conf.json: |
{
"name": "vxlan0",
"plugins": [
{
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
},
{
"type": "portmap",
"capabilities": {
"portMappings": true
}
}
]
}
修改net-conf.json,加入"VNI" : 4096, "Port": 4789:
net-conf.json: |
{
"Network": "{{ kube_pods_subnet }}",
"Backend": {
"Type": "{{ flannel_backend_type }}",
"VNI" : 4096,
"Port": 4789
}
}
修改完成後,執行:wq退出
4. 執行命令創建kubernetes網絡
ansible-playbook -i inventory/your_name/hosts.ini reset.yml -vv
5. 加入windows server 2019結點
參考:
https://docs.microsoft.com/en-us/virtualization/windowscontainers/kubernetes/joining-windows-workers?tabs=ManagementIP
其中,通過執行命令,獲得集羣的參數
kubectl cluster-info dump > /tmp/k8s.info
檢索:--cluster-cidr 即爲<Cluster CIDR>
--service-cluster-ip-range 即爲<Service CIDR>
"ports": [
{
"name": "dns",
"protocol": "UDP",
"port": 53,
"targetPort": 53
},
{
"name": "dns-tcp",
"protocol": "TCP",
"port": 53,
"targetPort": 53
},
{
"name": "metrics",
"protocol": "TCP",
"port": 9153,
"targetPort": 9153
}
],
"selector": {
"k8s-app": "kube-dns"
},
"clusterIP": "10.96.0.10",
"type": "ClusterIP",
"sessionAffinity": "None"
},
其中,kube-dns對應的clusterIP 即爲<Kube-dns Service IP>
最後,執行如下命令,其中<network mode>爲overlay
.\start.ps1 -ManagementIP <Windows Node IP> -NetworkMode <network mode> -ClusterCIDR <Cluster CIDR> -ServiceCIDR <Service CIDR> -KubeDnsServiceIP <Kube-dns Service IP> -LogDir <Log directory>