官术网_书友最值得收藏!

Scheduling example

Let's take a look at a quick example of setting some resource limits. If we look at our K8s dashboard, we can get a quick snapshot of the current state of resource usage on our cluster using https://<your master ip>/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard and clicking on Nodes on the left-hand side menu.

We will see a dashboard as shown in the following screenshot:

Kube Node dashboard

This  view shows the aggregate CPU and memory across the whole cluster, nodes, and master. In this case, we have fairly low CPU utilization, but a decent chunk of memory in use.

Let's see what happens when I try to spin up a few more pods, but this time, we will request 512 Mi for memory and 1500 m for the CPU. We'll use 1500 m to specify 1.5 CPUs; since each node only has 1 CPU, this should result in failure. Here's an example of RC definition:

apiVersion: v1 
kind: ReplicationController
metadata:
name: node-js-constraints
labels:
name: node-js-constraints
spec:
replicas: 3
selector:
name: node-js-constraints
template:
metadata:
labels:
name: node-js-constraints
spec:
containers:
- name: node-js-constraints
image: jonbaier/node-express-info:latest
ports:
- containerPort: 80
resources:
limits:
memory: "512Mi"
cpu: "1500m"

Listing 2-12: nodejs-constraints-controller.yaml

To open the preceding file, use the following command:

$ kubectl create -f nodejs-constraints-controller.yaml

The replication controller completes successfully, but if we run a get pods command, we'll note the node-js-constraints pods are stuck in a pending state. If we look a little closer with the describe pods/<pod-id> command, we'll note a scheduling error (for pod-id use one of the pod names from the first command):

$ kubectl get pods
$ kubectl describe pods/<pod-id>

The following screenshot is the result of the preceding command:

Pod description

Note, in the bottom events section, that the WarningFailedScheduling pod error listed in Events is accompanied by fit failure on node....Insufficient cpu after the error. As you can see, Kubernetes could not find a fit in the cluster that met all the constraints we defined.

If we now modify our CPU constraint down to 500 m, and then recreate our replication controller, we should have all three pods running within a few moments.

主站蜘蛛池模板: 沐川县| 留坝县| 离岛区| 保山市| 通化县| 宿迁市| 长白| 邢台市| 荆州市| 新宁县| 陕西省| 彭水| 鄂伦春自治旗| 丹棱县| 左权县| 讷河市| 永春县| 商城县| 鹤峰县| 鄱阳县| 比如县| 天水市| 伊吾县| 依兰县| 青河县| 宜阳县| 永州市| 扬州市| 达孜县| 和林格尔县| 河西区| 北宁市| 三穗县| 明光市| 贡嘎县| 景洪市| 黎城县| 溧阳市| 罗田县| 松原市| 太湖县|