kubernetes
一、控制器
- pod的类型和控制器类型
- replication controller 和reolicaset的区别、deployment
- daemonSet
- stateset
- job、cronjob、hpa
- reolicaset实例
[kubeadm@server2 manifest]$ cat rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-example
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
[kubeadm@server2 manifest]$ kubectl apply -f rs.yaml
replicaset.apps/replicaset-example created
[kubeadm@server2 manifest]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
replicaset-example-brdhn 0/1 ContainerCreating 0 7s
replicaset-example-n4lnd 0/1 ContainerCreating 0 7s
[kubeadm@server2 manifest]$ kubectl get rs
NAME DESIRED CURRENT READY AGE
replicaset-example 2 2 2 57s
[kubeadm@server2 manifest]$ kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
replicaset-example-brdhn 1/1 Running 0 3m47s app=nginx
replicaset-example-n4lnd 1/1 Running 0 3m47s app=nginx
rs控制pod的副本
[kubeadm@server2 manifest]$ kubectl label pod replicaset-example-brdhn app=myapp --overwrite
pod/replicaset-example-brdhn labeled
[kubeadm@server2 manifest]$ kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
replicaset-example-brdhn 1/1 Running 0 6m18s app=myapp
replicaset-example-dtb4j 1/1 Running 0 5s app=nginx
replicaset-example-n4lnd 1/1 Running 0 6m18s app=nginx
[kubeadm@server2 manifest]$ kubectl delete pod replicaset-example-brdhn
pod "replicaset-example-brdhn" deleted
[kubeadm@server2 manifest]$ kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
replicaset-example-dtb4j 1/1 Running 0 2m38s app=nginx
replicaset-example-n4lnd 1/1 Running 0 8m51s app=nginx
- deployment实例
删除上面的rs实验
[kubeadm@server2 manifest]$ kubectl delete -f rs.yaml
[kubeadm@server2 manifest]$ kubectl get pod
No resources found in default namespace.
[kubeadm@server2 manifest]$ cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: myapp:v1
ports:
- containerPort: 80
[kubeadm@server2 manifest]$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-5c58fb7c46-2cpjt 1/1 Running 0 72s
pod/nginx-deployment-5c58fb7c46-tj75w 1/1 Running 0 72s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 36h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-deployment 2/2 2 2 74s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-deployment-5c58fb7c46 2 2 2 73s
deployment的工作机制
- daemonset实例
[kubeadm@server2 manifest]$ cat daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset-example
labels:
app: zabbix-agent
spec:
selector:
matchLabels:
app: zabbix-agent
template:
metadata:
labels:
app: zabbix-agent
spec:
containers:
- name: zabbix-agent
image: zabbix-agent
[kubeadm@server2 manifest]$ kubectl apply -f daemonset.yaml
daemonset.apps/daemonset-example created
[kubeadm@server2 manifest]$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/daemonset-example-7q9g7 0/1 ContainerCreating 0 6s
pod/daemonset-example-t9pg8 0/1 ContainerCreating 0 5s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37h
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/daemonset-example 2 2 0 2 0 <none> 6s
每个节点只跑一个pod
[kubeadm@server2 manifest]$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
daemonset-example-7q9g7 1/1 Running 0 116s 10.244.1.19 server3 <none> <none>
daemonset-example-t9pg8 1/1 Running 0 115s 10.244.2.15 server4 <none> <none>
- job实例
[kubeadm@server2 manifest]$ cat job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
- cronjob实例
[kubeadm@server2 manifest]$ cat cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob-example
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: cronjob
image: busybox
args:
- /bin/sh
- -c
- date;echo Hello from k8s cluster
restartPolicy: OnFailure
[kubeadm@server2 manifest]$ kubectl get pod -w
NAME READY STATUS RESTARTS AGE
cronjob-example-1587266520-gff9b 0/1 Pending 0 0s
cronjob-example-1587266520-gff9b 0/1 Pending 0 1s
cronjob-example-1587266520-gff9b 0/1 ContainerCreating 0 1s
cronjob-example-1587266520-gff9b 0/1 Completed 0 7s
^C
[kubeadm@server2 manifest]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
cronjob-example-1587266520-gff9b 0/1 Completed 0 19s
[kubeadm@server2 manifest]$ kubectl logs cronjob-example-1587266520-gff9b
Sun Apr 19 03:22:10 UTC 2020
Hello from k8s cluster