kubernetes.io > Documentation > Reference > kubectl CLI > kubectl Cheat Sheet
kubernetes.io > Documentation > Concepts > Configuration > Managing Compute Resources for Containers
kubernetes.io > Documentation > Concepts > Workload > Controllers > DaemonSets
kubernetes.io > Documentation > Concepts > Configuration > Assigning Pods to Nodes
kubernetes.io > Documentation > Concepts > Configuration > Taints and Tolerations
kubernetes.io > Documentation > Tasks > Administer a Cluster > Configure Multiple Schedulers
kubernetes.io > Documentation > Tasks > Administer a Cluster > Manage Memory, CPU, and API Resources > Configure Default Memory Requests and Limits for a Namespace
kubernetes.io > Documentation > Tasks > Administer a Cluster > Static Pods > Static Pods
kubernetes.io > Documentation > Reference > Command line tools reference > kube-scheduler
show
$ kubectl label nodes node-1 size=Large
$ cat pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
nodeSelector:
size: Large
show
Create a YAML:
$ cat daemonsets.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: myapp-rc
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: nginx-container
image: nginx
$ kubectl create -f daemonset.yaml
show
$ cat namespacequota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-quota
namespace: default
spec:
hard:
pods: "10"
requests.cpu: "4"
requests.memory: 4Gi
limits.cpu: "10"
limits.memory: 10Gi
$ cat podquota.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 8080
resources:
requests:
memory: "1Gi"
cpu: 1
limits:
memory: "2Gi"
cpu: 2
show
$ cat schedulerpod.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-custom-scheduler
namespace: kube-system
spec:
containers:
- command:
- kube-scheduler
- --address=127.0.0.1
- --kubeconfig=/etc/kubernetes/scsheduler.conf
- -- leader-elect=true
- --lock-object-name=my-custom-scsheduler
image: k8s.gcr.io/kube-scheduler-amd64:v1.11.3
name: kube-scheduler
$ cat pod-to-schedule-differently.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-custom-scheduled-pod
spec:
containers:
- image: nginx
name: nginx
schedulerName: my-custom-scheduled
show
Store the POD yaml files in /etc/Kubernetes/manifests
Create a static pod named static-busybox that uses the busybox image and the command sleep 1000
$ kubectl run --restart=Never --image=busybox static-busybox --dry-run -o yaml --command -- sleep 1000 > /etc/kubernetes/manifests/static-busybox.yaml
If you are asked to delete a static Pod from a specific node then run $ kubectl get nodes -o wide to get the Node IP and then ssh to it. Kubelet config file might be /var/lib/kubelet/config.yaml. Check the 'staticPodPath:' and go to that directory and delete the YAML file.
show
$ kubectl get events
$ kubectl get events --watch
$ kubectl logs kube-scheduler-bk8s-node0 -n kube-system
/var/log/kube-scheduler.log on the control/master node (if schedule is standalone service)
show
$ wget "https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kube-scheduler"
$ chmod +x kube-scheduler
$ sudo mv kube-scheduler /usr/local/bin/
$ sudo mv kube-scheduler.kubeconfig /var/lib/kubernetes/
$ cat <<EOF | sudo tee /etc/kubernetes/config/kube-scheduler.yaml
apiVersion: componentconfig/v1alpha1
kind: KubeSchedulerConfiguration
clientConnection:
kubeconfig: "/var/lib/kubernetes/kube-scheduler.kubeconfig"
leaderElection:
leaderElect: true
EOF
$ cat <<EOF | sudo tee /etc/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes
[Service]
ExecStart=/usr/local/bin/kube-scheduler \\
--config=/etc/kubernetes/config/kube-scheduler.yaml \\
--v=2
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl enable kube-scheduler
$ sudo systemctl start kube-scheduler