Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5 en Centos7
master,minion1,minion2# vi /etc/yum.repos.d/virt7-docker-common-release.repo
[virt7-docker-common-release]
name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0
master,minion1,minion2# reboot
master# vi /etc/kubernetes/config
master# vi /etc/kubernetes/apiserver
ANTIGUO → KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1"
NUEVO → KUBE_API_ADDRESS="--address=0.0.0.0"
ANTIGUO → KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
NUEVO → KUBE_ETCD_SERVERS="--etcd-servers=http://10.150.106.136:2379"
comentar
#KUBE_ADMISSION_CONTROL="--
admissioncontrol=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny
,ServiceAccount,ResourceQuota"
Luego modificamos el archivo de etcd y modificamos las variables a continuación
master# vi /etc/etcd/etcd.conf
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
Definición de una red FLANNEL, esta se utiliza para comunicación interna entre cada
servidores
master# vi flannel-config.json
{
"Network": "10.0.10.0/16",
"SubnetLen": 24,
"Backend": {
"Type": "vxlan",
"VNI": 1
}
}
master# vi /etc/sysconfig/flanneld
buscamos
FLANNEL_ETCD_KEY="/atomic.io/network"
lo verificamos
minion1# vi /etc/kubernetes/config
bascamos
KUBE_MASTER="--master=http://127.0.0.1:8080"
cambiamos a
KUBE_MASTER="--master=http://10.150.106.136:8080"
las cambiamos a
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=minion1"
KUBELET_API_SERVER="--api-servers=http://10.150.106.136:8080"
Red FLANNEL
minion1# vi /etc/sysconfig/flanneld
buscamos
FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"
modificamos a
FLANNEL_ETCD_ENDPOINTS="http://10.150.106.136:2379"
Con esto ya podemos utilizar nuestra imagen Docker para Kubernetes, ahora debemos
implementarla como servicio
Crear archivo Deployments en lenguaje yaml
master# vi Deployment_WildFly.yaml
apiVersion: extensions/v1beta1
#apiVersion: v1
kind: Deployment
metadata:
name: wildfly
spec:
replicas: 2 #Crear 2 replicas una en cada servidor
minion
template:
metadata:
labels:
app: wildfly
spec:
containers:
- name: wildfly
image: fgazmuri/wildfly8 #nombre del repositorio Docker
ports:
- containerPort: 8080 #Puerto http publico
name: web
- containerPort: 9990 #Puerto de administracion
name: admin
master# vi Service_WildFly.yaml
kind: Service
apiVersion: v1
metadata:
name: wildfly
spec:
type: LoadBalancer
selector:
app: wildfly
ports:
- name: web #Nombre del containerPort
protocol: TCP
port: 8081 #Puerto de salida desde la maquina fisica del minion
targetPort: 8080 #Puerto de salida desde la maquina virtual del minion
- name: admin
protocol: TCP
port: 9991
targetPort: 9990
Actualizar un Deployments
Se debe trabajar con la imagen de un POD dentro del Minion1 o 2 luego realizar
commmit del docker con el siguiente comando
minion1# docker commit -a "fgazmuri" -m "version 1.1" [uid_container]
fgazmuri/wildfly8:1.1
el uid_container se obtiene con el comando
minion1# docker ps
Luego en el master
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file
will be
# reopened with the relevant failures.
#
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "2"
creationTimestamp: 2017-08-18T14:19:18Z
generation: 2
labels:
app: wildfly
name: wildfly
namespace: default
resourceVersion: "94811"
selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/wildfly
uid: 38ffa3bb-8420-11e7-b34e-506b8d2b1f31
spec:
replicas: 2
selector:
matchLabels:
app: wildfly
name: wildfly
namespace: default
resourceVersion: "94811"
selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/wildfly
uid: 38ffa3bb-8420-11e7-b34e-506b8d2b1f31
spec:
replicas: 2
selector:
matchLabels:
app: wildfly
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: wildfly
spec:
containers:
- image: fgazmuri/wildfly8:1.1 #Se debe cambiar la version
imagePullPolicy: Always
name: wildfly
ports:
- containerPort: 8080
name: web
protocol: TCP
- containerPort: 9990
name: admin
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
dnsPolicy: ClusterFirst
restartPolicy: Always
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 2
conditions:
- lastTransitionTime: 2017-08-18T14:19:21Z
lastUpdateTime: 2017-08-18T14:19:21Z
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
observedGeneration: 2
replicas: 2
updatedReplicas: 2
Par crear un volumen persistente se debe crear el siguiente archivo donde crea el
volumne para le sistema
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-home-test
labels:
type: local
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /home/volumenes/wildfly
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-home-test
labels:
type: local
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /home/volumenes/wildfly
Para agregar el volumen y asignarle memoria restringida se deben agregar las lineas
al archivo de Deployments
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: wildfly
spec:
replicas: 2
template:
metadata:
labels:
app: wildfly
spec:
containers:
- name: wildfly
image: fgazmuri/wildfly8:1.1
ports:
- containerPort: 8080
name: web
- containerPort: 9990
name: admin
volumeMounts:
- name: wildfly
mountPath: /test //Ruta que vera el Pods
resources:
requests:
memory: 128Mi
cpu: 100m
limits:
memory: 512Mi
cpu: 250m
volumes:
- name: wildfly
persistentVolumeClaim:
claimName: wildfly-pv-claim //Nombre del claim se puede
verificar con #kubectl get pvc