k8s & flannel --- 拨打 tcp 172.96.0.1:443: i/o 超时
k8s & flannel --- dial tcp 172.96.0.1:443: i/o timeout
- 我使用以下命令初始化 kubeadm
kubeadm init
--apiserver-advertise-address=192.168.64.104
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
--kubernetes-version v1.17.3
--service-cidr=172.96.0.0/16
--pod-network-cidr=172.244.0.0/16
- 我有一个master和两个node,我在三台机器上测试follow command
curl -k https://172.96.0.1:443/version
命令结果:
{
"major": "1",
"minor": "17",
"gitVersion": "v1.17.3",
"gitCommit": "06ad960bfd03b39c8310aaf92d1e7c12ce618213",
"gitTreeState": "clean",
"buildDate": "2020-02-11T18:07:13Z",
"goVersion": "go1.13.6",
"compiler": "gc",
"platform": "linux/amd64"
}
- 但是当我使用命令
helm install --namespace openebs --name openebs stable/openebs --version 1.5.0
时,我得到的结果是 Error: Get https://172.96.0.1:443/version?timeout=32s: dial tcp 172.96.0.1:443: i/o timeout
我不知道现在发生了什么,我该如何解决这个问题?
我的问题已经解决了
当我回顾我的安装过程时,我认为这个问题可能与应用跟随命令的步骤有关kubectl apply -f kube-flannel.yml
我在本地 kube 中找到了以下配置代码-flannel.yml
net-conf.json: | { "Network": "10.244.0.0/16", "Backend": {
"Type": "vxlan" } }
- 我认为这个 ip 可能必须与 kubeadm init 命令中的
pod-network-cidr
参数相同,所以我重置了 k8s,并更改了我的 kubeadm init 命令,如下所示
kubeadm init
--apiserver-advertise-address=192.168.64.104
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
--kubernetes-version v1.17.3
--service-cidr=10.96.0.0/16
--pod-network-cidr=10.244.0.0/16
终于成功了
- 虽然我解决了这个问题,但我还是不明白在这种情况下会发生什么
我知道@wr1ttenyu zhao已经解决了这个问题,但我决定提供一个答案只是为了澄清。
正如我们在 flannel documentation 中看到的:
NOTE: If kubeadm is used, then pass --pod-network-cidr=10.244.0.0/16 to kubeadm init to ensure that the podCIDR is set.
--pod-network-cidr 选项指定 pod 网络的 IP 地址范围。
我们应该使用 10.244.0.0/16
网络,因为它硬编码在 kube-flannel.yml 文件中:
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
因此,使用 kubeadm init --pod-network-cidr=10.244.0.0/16
命令创建 Kubernetes 集群将使用 flannel,无需任何额外的 flannel 配置。
要使用不同的网络,我们需要在应用之前修改 kube-flannel.yml 文件中的 "Network": "10.244.0.0/16"
行,类似于此 answer[=34= 中描述的内容].
- 我使用以下命令初始化 kubeadm
kubeadm init
--apiserver-advertise-address=192.168.64.104
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
--kubernetes-version v1.17.3
--service-cidr=172.96.0.0/16
--pod-network-cidr=172.244.0.0/16
- 我有一个master和两个node,我在三台机器上测试follow command
curl -k https://172.96.0.1:443/version
命令结果:
{ "major": "1", "minor": "17", "gitVersion": "v1.17.3", "gitCommit": "06ad960bfd03b39c8310aaf92d1e7c12ce618213", "gitTreeState": "clean", "buildDate": "2020-02-11T18:07:13Z", "goVersion": "go1.13.6", "compiler": "gc", "platform": "linux/amd64" }
- 但是当我使用命令
helm install --namespace openebs --name openebs stable/openebs --version 1.5.0
时,我得到的结果是Error: Get https://172.96.0.1:443/version?timeout=32s: dial tcp 172.96.0.1:443: i/o timeout
我不知道现在发生了什么,我该如何解决这个问题?
我的问题已经解决了
当我回顾我的安装过程时,我认为这个问题可能与应用跟随命令的步骤有关
kubectl apply -f kube-flannel.yml
我在本地 kube 中找到了以下配置代码-flannel.yml
net-conf.json: | { "Network": "10.244.0.0/16", "Backend": { "Type": "vxlan" } }
- 我认为这个 ip 可能必须与 kubeadm init 命令中的
pod-network-cidr
参数相同,所以我重置了 k8s,并更改了我的 kubeadm init 命令,如下所示
kubeadm init
--apiserver-advertise-address=192.168.64.104
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
--kubernetes-version v1.17.3
--service-cidr=10.96.0.0/16
--pod-network-cidr=10.244.0.0/16
终于成功了
- 虽然我解决了这个问题,但我还是不明白在这种情况下会发生什么
我知道@wr1ttenyu zhao已经解决了这个问题,但我决定提供一个答案只是为了澄清。
正如我们在 flannel documentation 中看到的:
NOTE: If kubeadm is used, then pass --pod-network-cidr=10.244.0.0/16 to kubeadm init to ensure that the podCIDR is set.
--pod-network-cidr 选项指定 pod 网络的 IP 地址范围。
我们应该使用 10.244.0.0/16
网络,因为它硬编码在 kube-flannel.yml 文件中:
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
因此,使用 kubeadm init --pod-network-cidr=10.244.0.0/16
命令创建 Kubernetes 集群将使用 flannel,无需任何额外的 flannel 配置。
要使用不同的网络,我们需要在应用之前修改 kube-flannel.yml 文件中的 "Network": "10.244.0.0/16"
行,类似于此 answer[=34= 中描述的内容].