这个事情困扰了我一整天,创建nginx时出现pod 0/1 pending,一开始是以为flannel网卡出现了问题,一直去选择用calico网卡,但是calico这个玩意配置的路上全是坑,所以一直配不出calico,疯狂重启,疯狂报错,发现flannel网卡没有问题。
于是出搜索是怎么回事,删除了nginx重新创建了nginx
(这个只是我的解决步骤,不想创建nginx或者创建过的可以不创,跳过下面的创建nginx步骤1-7)
- 创建一个名为 nginx-deployment.yaml 的 YAML 文件,内容如下:
- apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80- 使用以下命令将 Deployment 配置应用到集群中:
kubectl apply -f nginx-deployment.yaml
创建一个名为 nginx-service.yaml 的 YAML 文件,
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePortkubectl apply -f nginx-service.yaml
- 不创建nginx的从这里开始看
创建好了nginx 用 kubectl get pod,svc看一眼 wc
三个都没启动成功 fafafa!
kubectl describe pod nginx-deployment-59c9f8dff-cq66g
随便查看了一个pod的错误原因显示节点上有一个污点 我的pod没有容忍这个污点,于是我开始查找相关的内容:
我找到了这个文章
首先这个问题是由什么造成的:
当创建单机版的 k8s 时,这个时候 master 节点是默认不允许调度 pod 的,需要执行kubectl taint nodes --all node-role.kubernetes.io/master-
命令将 master 标记为可调度.
原文链接:https://blog.csdn.net/baobaoxiannv/article/details/86987171
好了,知道了,那就执行你这个文件,反正我有快照,不行就打回去呗。
然后下面这个代码kubectl describe nodes k8s-master | grep Taints 是在这里原文链接:https://blog.csdn.net/qq_70531838/article/details/134878865s
kubectl get pods -A 看一眼
1/1 了!
去看一眼网页成了!
总结:主要原因是当创建单机版的 k8s 时,这个时候 master 节点是默认不允许调度 pod 的。这个坑藏的有点深。
还有后面如果有人在calico部署的时候卡住可以试一下用flannel插件部署,calico我查找了一整天的文档,改文件很麻烦,网络连接不通问题,还有版本不一致 问题 坑也是巨多,我选择放弃calico的部署了。