


network: open /run/flannel/subnet.env: no such file or directory
1:在每个节点创建文件/run/flannel/subnet.env写入以下内容。注意每个节点都要加哦,不是主节点
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
2:然后删除掉部署
我这里名字是test-k8s,需要换成自己的
kubectl delete deployment test-k8s
3:重新执行部署
kubectl apply -f app.yaml
/run/flannel/subnet.env is missing FLANNEL_NETWORK, FLANNEL_IPV6_NETWORK
这个错其实也是因为subnet.env文件的问题,你看提示里边就说:/run/flannel/subnet.env is missing FLANNEL_NETWORK,这个文件subnet.env缺少了FLANNEL_NETWORK配置,开始去纠结网络问题去了,其实是配置文件里边这块内容写错了。
查看文件内容:
可以看到第一行的配置是有问题的,复制的时候少复制了几个字母,单词打错了
应该是这样的:FLANNEL_NETWORK。-。-大意了,没有闪
注意,主节点和子节点都要修改对哦,不要子修改主节点
涉及到的节点都修改好后重新部署即可
删除掉部署
kubectl delete deployment test-k8s
重新执行部署
kubectl apply -f app.yaml
k8s虚拟机跑上了,宿主机访问不到。宿主机使用虚拟机的ip+端口访问不到
这种问题,通常ip与端口映射或者监听问题。
虚拟机跑上了,本地能使用curl访问,但是宿主机使用虚拟机的ip+端口访问不到。
localhost是只能本地端口访问,把监听地址改成0.0.0.0就可以了
在做端口映射的时候增加一个—address 把地址加一下就可以了
kubectl port-forward --address 0.0.0.0 pod/pod-name 8080:8080
address 0.0.0.0 K8S会监听任何地址就没有问题了
当然如果还不行的话可以考虑一下部署的应用本身的ip地址与端口问题
比如下面的一个简单的nodejs服务监听。
localhost是只能本地端口访问,把监听地址改成0.0.0.0就可以外部访问了。当然一般只需要在k8s里边设置address 0.0.0.0就行了
// 监听地址不要写成127.0.0.1或者localhost
var server = app.listen(8081, '127.0.0.1', function () {
var host = server.address().address;
var port = server.address().port;
console.log("地址为 http://%s:%s", host, port);
});
//监听地址写成0.0.0.0
var server = app.listen(8081, '0.0.0.0', function () {
var host = server.address().address;
var port = server.address().port;
console.log("地址为 http://%s:%s", host, port);
});
ifconfig cni0 down 未找到命令
安装net-tools即可
yum install net-tools
wget: 未找到命令
输入如下命令安装:
yum -y install wget
安装好了查看:
rpm -qa|grep "wget"
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)