we are going to install kubernetes in a cluster of virtual machines, which were provided with vagrant.
The cluster on two node and manager.
- vagrant
start the virtual machines
$ vagrant up
Enter in each virtual machine:
$ vagrant ssh manager
$ vagrant ssh node1
$ vagrant ssh node2
disabled swap in each virtual machine of the cluster
$ sudo nano /etc/fstab
comment file
#/dev/mapper/VolGroup00-LogVol01 swap
config selinux in each virtual machine of the cluster
$ sudo nano /etc/selinux/config
SELINUX=disabled
$ sudo yum update
Reboot cluster
$ vagrant reload
verified in the virtual machines that selinux is disabled
$ sestatus
in each virtual machine of the cluster
$ sudo yum install -y kubelet kubeadm kubectl
$ sudo su
$ systemctl enable kubelet && sudo systemctl start kubelet
Reboot cluster
$ vagrant reload
before verified ips in each virtual machine
$ ip a
config hosts in each virtual machine of the cluster,
$ sudo nano /etc/hosts
add in file
192.168.1.7 node1
192.168.1.5 node2
192.168.1.8 manager
init cluster kubernetes note: manager requires 2 cpus
$ vagrant ssh manager
$ sudo kubeadm init
join node1 and node2 execute token join on master
kubeadm join 192.168.1.8:6443 --token hxsc56.qc8vn2zbepwxjw59 --discovery-token-ca-cert-hash sha256:2075c05627749013bbd0fcfb044173fcc9f0df451f789cb844c5808d41585a46
To start using your cluster, you need to run the following as a regular user:
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
but if you are root(for this time just run)
$ export KUBECONFIG=/etc/kubernetes/admin.conf
virtualize the network and create roles
$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
verifiy
$ kubectl get pods --all-namespaces
$ sudo kubeadm join 192.168.1.8:6443 --token hxsc56.qc8vn2zbepwxjw59 --discovery-token-ca-cert-hash sha256:2075c05627749013bbd0fcfb044173fcc9f0df451f789cb844c5808d41585a46
$ sudo kubeadm join 192.168.1.8:6443 --token hxsc56.qc8vn2zbepwxjw59 --discovery-token-ca-cert-hash sha256:2075c05627749013bbd0fcfb044173fcc9f0df451f789cb844c5808d41585a46
##validate join nodes in manager
$ kubectl get nodes
##Deployment n manager
$ sudo nano nginx-deployment.yaml
copy
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template: # create pods using pod definition in this template
metadata:
# unlike pod-nginx.yaml, the name is not included in the meta data as a unique name is
# generated from the deployment name
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
deployment
$ kubectl apply -f nginx-deployment.yaml
verify deployment
$ kubectl describe deployment nginx-deployment.yaml
view pods
kubectl get pods -l app=nginx
describe pods
kubectl describe pod nginx-deployment-67594d6bf6-bgm8g
Eliminando el deployment
$ kubectl delete -f nginx-deployment.yaml