Kubernetes—k8s中Service实例出现污点

Service可以看做是一组同类的Pod对外的访问接口,借助Service,应用可以方便的实现服务发现和负载均衡。

Service在很多情况下只是一个概念,真正起作用的其实是kube-proxy服务进
程,每个Node节点上都运行了一个kube-proxy的服务进程。当创建Service的时候会通过API Server向etcd写入创建的Service的信息,而kube-proxy会基于监听的机制发现这种Service的变化,然后它会将最新的Service信息转换为对应的访问规则。

开启ipvs(必须安装ipvs内核模块,否则会降级为iptables):
kubectl edit cm kube-proxy -n kube-system 
kubectl delete pod -l k8s-app=kube-proxy -n kube-system 
# 测试ipvs模块是否开启成功 
ipvsadm -Ln

service使用实例

在使用Service之前,首先利用Deployment创建出3个Pod,注意要为Pod设置app=nginx-pod 的标签。
创建deployment.yaml文件,内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pc-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
        - name: nginx
          image: nginx:1.17.1
          ports:
            - containerPort: 80

创建Deployment:

kubectl create -f deployment.yaml

查看Pod信息:

kubectl get pod -o wide --show-labels

在这里插入图片描述
结果发现ip显示none,没分配ip。
这是什么原因呢?
其实,是因为w我的三个集群节点(节点名分别为k8s-master、k8s-node02、k8s-node01)有污点了。

先查看污点名
[root@k8s-master ~]# kubectl describe node k8s-node02 |grep Taints
Taints:             node.kubernetes.io/unreachable:NoSchedule
[root@k8s-master ~]# kubectl describe node k8s-master |grep Taints
Taints:             node-role.kubernetes.io/master:NoSchedule
[root@k8s-master ~]# kubectl describe node k8s-node01 |grep Taints
Taints:             <none>

在这里插入图片描述

然后,用-去除污点后就好了
[root@k8s-master ~]# kubectl taint nodes k8s-master node-role.kubernetes.io/master:NoSchedule-
node/k8s-master untainted
[root@k8s-master ~]# kubectl taint nodes k8s-node02 node.kubernetes.io/unreachable:NoSchedule-
node/k8s-node02 untainted
[root@k8s-master ~]# kubectl describe node k8s-node01 |grep Taints
Taints:             <none>
[root@k8s-master ~]# kubectl taint nodes k8s-node01 <none>-
-bash: none: No such file or directory

(别忘了 - )
在这里插入图片描述

再查看的时候就有ip了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_50685659/article/details/127030171