In addition to the imperative style commands described elsewhere, Kubernetes supports declarative YAML or JSON configuration files. Often times config files are prefereable to imperative commands, since they can be checked into version control and changes to the files can be code reviewed, producing a more robust, reliable and archival system.
cd kubernetes
kubectl create -f pod.yaml
Where pod.yaml contains something like:
apiVersion: v1beta3
kind: Pod
metadata:
labels:
app: nginx
name: nginx
namespace: default
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
ports:
- containerPort: 80
protocol: TCP
restartPolicy: Always
You can see your cluster's pods:
kubectl get pods
and delete the pod you just created:
kubectl delete pods nginx
To run replicated containers, you need a Replication Controller. A replication controller is responsible for ensuring that a specific number of pods exist in the cluster.
cd kubernetes
kubectl create -f replication.yaml
Where replication.yaml
contains:
apiVersion: v1beta3
kind: ReplicationController
metadata:
name: nginx
namespace: default
spec:
replicas: 3
selector:
app: nginx
template:
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
ports:
- containerPort: 80
protocol: TCP
restartPolicy: Always
To delete the replication controller (and the pods it created):
kubectl delete rc nginx