k8s调度约束、控制器、无头服务和配置管理

调度方式

调度方式用于将pod资源调度到相应的node上,可自动分配也可自己指定

  • nodeName:用于将pod调度到指定node上(跳过调度器直接分配)
  • nodeSelect:用于将pod调度到匹配label的node上

nodeName方式

用于将pod调度到指定node上(跳过调度器直接分配)

[root@master demo]# vim pod-ns.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
  labels:
    app: nginx
spec:
  nodeName: 20.0.0.30
  containers:
  - name: nginx
image: nginx:1.15

查看详细事件,看到events中并没有经过调度器scheduler

[root@master demo]# kubectl get pods -o wide
NAME          READY   STATUS    RESTARTS   AGE    IP           NODE        NOMINATED NODE
pod-example   1/1     Running   0          108s   172.17.3.3   20.0.0.30   <none>
[root@master demo]# kubectl describe pod pod-example
Events:
  Type    Reason   Age    From                Message
  ----    ------   ----   ----                -------
  Normal  Pulling  3m55s  kubelet, 20.0.0.30  pulling image "nginx:1.15"
  Normal  Pulled   3m25s  kubelet, 20.0.0.30  Successfully pulled image "nginx:1.15"
  Normal  Created  3m25s  kubelet, 20.0.0.30  Created container
  Normal  Started  3m25s  kubelet, 20.0.0.30  Started container

nodeSelect方式

用于将pod调度到匹配label的node上

[root@master demo]# kubectl get nodes
NAME        STATUS   ROLES    AGE   VERSION
20.0.0.30   Ready    <none>   14d   v1.12.3
20.0.0.40   Ready    <none>   14d   v1.12.3
[root@master demo]# kubectl label nodes 20.0.0.30 njit=a
node/20.0.0.30 labeled
[root@master demo]# kubectl label nodes 20.0.0.40 njit=b
node/20.0.0.40 labeled
[root@master demo]# kubectl get nodes --show-labels
NAME        STATUS   ROLES    AGE   VERSION   LABELS
20.0.0.30   Ready    <none>   14d   v1.12.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=20.0.0.30,njit=a
20.0.0.40   Ready    <none>   14d   v1.12.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=20.0.0.40,njit=b
[root@master demo]# vim pod-ns.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
  labels:
    app: nginx
spec:
  nodeSelector:
    njit: b
  containers:
  - name: nginx
    image: nginx:1.15
[root@master demo]# kubectl get pods
NAME          READY   STATUS    RESTARTS   AGE
pod-example   1/1     Running   0          83s
查看详细事件,看到events中有记录经过了scheduler
[root@master demo]# kubectl describe pod pod-example
Events:
  Type    Reason     Age   From                Message
  ----    ------     ----  ----                -------
  Normal  Scheduled  2m2s  default-scheduler   Successfully assigned default/pod-example to 20.0.0.40
  Normal  Pulling    2m1s  kubelet, 20.0.0.40  pulling image "nginx:1.15"
  Normal  Pulled     98s   kubelet, 20.0.0.40  Successfully pulled image "nginx:1.15"
  Normal  Created    97s   kubelet, 20.0.0.40  Created container
  Normal  Started    97s   kubelet, 20.0.0.40  Started container

故障排除

描述
Pending Pod创建已经提交到Kubernetes。但是,因为某种原因而不能顺利创建。例如下载镜像慢,调度不成功。
Running Pod已经绑定到一个节点,并且已经创建了所有容器。至少有一个容器正在运行中,或正在启动或重新启动。.
Succeeded Pod中的所有容器都已成功终止,不会重新启动。
Failed Pod的所有容器均已终止,且至少有一个容器己在故障中终止。也就是说,容器要么以非零状态退出,要么被系统终止。
Unknown 由于某种原因apiserver无法获得Pod的状态,通常是由于Master与 Pod所在主机kubelet通信时出错。

控制器

控制器:又称之为工作负载,包含以下5种类型的控制器

  • Deployment
  • StatefulSet
  • DaemonSet
  • Job
  • CronJob

controllers:在群集上管理和运行容器,用过label-select相关联
pod通过控制器实现应用的运维,如伸缩,升级等

Deployment

  • 部署无状态化应用,没有特定的角色,任何一个可以替代另一个
  • 管理pod和replicaset
  • 具有上线部署、副本设定、滚动升级、回滚等功能
  • 提供声明式更新,例如只更新一个新的image
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值