Quantcast
Channel: Blog Virtualizacion
Viewing all 681 articles
Browse latest View live

Eventos ID que muestran Shutdown en Windows

$
0
0

Eventos ID que muestran Shutdown en Windows

Explicamos como ver a través del visor de eventos como un ordenador/servidor se apaga. Lo vamos a detectar a través de los IDs de los eventos de un sistema operativo Windows.

Abrimos el visor de eventos:

eventos-id-que-muestran-shutdown-en-windows-1

Haremos un filtro con los siguientes procesos:

Event ID    Description
1074              Logged when an app (ex: Windows Update) causes the system to restart, or when a user initiates a restart or shutdown.
6006             Logged as a clean shutdown. It gives the message «The Event log service was stopped».
6008             Logged as a dirty shutdown. It gives the message «The previous system shutdown at time on date was unexpected».

eventos-id-que-muestran-shutdown-en-windows-2

El ID 1064 marca el start del shutdown, el resto el stop:

eventos-id-que-muestran-shutdown-en-windows-3

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Eventos ID que muestran Shutdown en Windows se publicó primero en Blog VMware y Citrix.


Powershell: Extraer SID de Username y viceversa

$
0
0

Powershell: Extraer SID de Username y viceversa

Os explicamos a extraer con comandos vía powershell el SID de un usuario y viceversa.

Muchas veces es un dato interesante para configurar procesos, extraer datos,…Os explico como extraer datos del sid o del user de varias formas:

whoami

powershell-extraer-sid-de-username-y-viceversa-1

whoami /user

powershell-extraer-sid-de-username-y-viceversa-2

wmic useraccount where SID="SID_completo_del_usuario" get name

wmic useraccount where name="Administrador" get sid

get-localuser -Name Administrador | format-list

powershell-extraer-sid-de-username-y-viceversa-3

get-localuser -SID xxxxxxx

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Powershell: Extraer SID de Username y viceversa se publicó primero en Blog VMware y Citrix.

Instalar cluster Kubernetes en Debian

$
0
0

Instalar cluster Kubernetes en Debian

Os vamos a enseñar cómo crear un cluster Debian con 3 nodos para poder usarlo con Kubernetes. Lo que haremos es darles a los 3 nodos un role. Uno de ellos será el master, los otros dos nodos completarán el cluster de Kubernetes.

instalar-cluster-kubernetes-en-debian-1

Partimos de tener tres máquinas virtuales con Debian y actualizadas.

Lo primero es hacer que resuelvan el nombre de las máquinas entre ellas para hacer la gestión más rápida y que se entiendan entre los nodos. Cambiar master-node y slave-node por los nombres de vuestras máquinas virtuales:

hostnamectl set-hostname master-node

hostnamectl set-hostname slave-node

Así que adicionalmente, introducimos en cada máquina virtual, en su fichero hosts las ips y los nombres de las máquinas:

root@KBMASTER:~# nano /etc/hosts
192.168.2.190 KBMASTER.NEGU.LOCAL KBMASTER
192.168.2.202 KUBERNETES01.NEGU.LOCAL KUBERNETES01
192.168.2.195 KUBERNETES02.NEGU.LOCAL KUBERNETES02

Instalación Kubernetes

Lo primero que haremos es instalar Docker en cada nodo:

apt install docker.io

Comprobamos la versión instalada:

root@KUBERNETES02:~# docker --version
Docker version 18.09.1, build 4c52b90

Habilitamos el servicio para que arranque al iniciar el sistema operativo en cada nodo:

root@KUBERNETES01:~# systemctl enable docker
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker

Agregamos la key de Kubernetes para todos los nodos:

root@KBMASTER:~# apt-get install curl
root@KBMASTER:~# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
OK

Agregamos el repositorio:

root@KUBERNETES02:~# apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

Actualizamos la caché:

root@KUBERNETES01:~# apt-get update
Obj:1 http://security.debian.org/debian-security buster/updates InRelease
Obj:2 http://deb.debian.org/debian buster InRelease
Obj:3 http://deb.debian.org/debian buster-updates InRelease
Des:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease [8.993 B] Des:5 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 Packages [32,2 kB] Descargados 41,2 kB en 1s (41,6 kB/s)
Leyendo lista de paquetes... Hecho

E instalamos kubeadm en los tres nodos:

root@KBMASTER:~# apt install kubeadm

Comprobamos que está bien instalado:

root@KBMASTER:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:17:50Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}

La topología que usaremos es modo Stacked. Si queréis saber más podéis revisar este enlace:

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/

instalar-cluster-kubernetes-en-debian-2

Configuración clúster Kubernetes

Para implementar Kubernetes deberemos deshabilitar la memoria Swap en el master con el siguiente comando (para que sea persistente comentar la línea también de /etc/fstab):

root@KBMASTER:~# swapoff -a

O:

swapoff -ased -i '/ swap / s/^/#/' /etc/fstab

Ahora inicializaremos el master, dando una subred para nuestra plataforma. Tardará unos minutos:

root@KBMASTER:~# kubeadm init --pod-network-cidr=10.69.0.0/16
W0106 21:29:32.226994 8293 validation.go:28] Cannot validate kube-proxy config - no validator is available
W0106 21:29:32.227153 8293 validation.go:28] Cannot validate kubelet config - no validator is available
[init] Using Kubernetes version: v1.17.0
[preflight] Running pre-flight checks
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Starting the kubelet
[certs] Using certificateDir folder "/etc/kubernetes/pki"
[certs] Generating "ca" certificate and key
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [kbmaster kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.2.213] [certs] Generating "apiserver-kubelet-client" certificate and key
[certs] Generating "front-proxy-ca" certificate and key
[certs] Generating "front-proxy-client" certificate and key
[certs] Generating "etcd/ca" certificate and key
[certs] Generating "etcd/server" certificate and key
[certs] etcd/server serving cert is signed for DNS names [kbmaster localhost] and IPs [192.168.2.213 127.0.0.1 ::1] [certs] Generating "etcd/peer" certificate and key
[certs] etcd/peer serving cert is signed for DNS names [kbmaster localhost] and IPs [192.168.2.213 127.0.0.1 ::1] [certs] Generating "etcd/healthcheck-client" certificate and key
[certs] Generating "apiserver-etcd-client" certificate and key
[certs] Generating "sa" key and public key
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Writing "admin.conf" kubeconfig file
[kubeconfig] Writing "kubelet.conf" kubeconfig file
[kubeconfig] Writing "controller-manager.conf" kubeconfig file
[kubeconfig] Writing "scheduler.conf" kubeconfig file
[control-plane] Using manifest folder "/etc/kubernetes/manifests"
[control-plane] Creating static Pod manifest for "kube-apiserver"
[control-plane] Creating static Pod manifest for "kube-controller-manager"
W0106 21:30:07.388079 8293 manifests.go:214] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
[control-plane] Creating static Pod manifest for "kube-scheduler"
W0106 21:30:07.393356 8293 manifests.go:214] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[apiclient] All control plane components are healthy after 35.501609 seconds
[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
[kubelet] Creating a ConfigMap "kubelet-config-1.17" in namespace kube-system with the configuration for the kubelets in the cluster
[upload-certs] Skipping phase. Please see --upload-certs
[mark-control-plane] Marking the node kbmaster as control-plane by adding the label "node-role.kubernetes.io/master=''"
[mark-control-plane] Marking the node kbmaster as control-plane by adding the taints [node-role.kubernetes.io/master:NoSchedule] [bootstrap-token] Using token: 24k2en.wbowfmkuklkwlsmo
[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy

Your Kubernetes control-plane has initialized successfully!

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.2.190:6443 --token yssgk3.fuq017u179rjybht \
--discovery-token-ca-cert-hash sha256:a0fdd8e375b4593ca3cb7c38509c5ea75f0b132064c51f421daa67d66bcb28f7

La última línea es importante apuntarla porque nos muestra el token y el resto de datos. Nos va a servir para unir nuevos nodos al clúster como veremos en los siguientes pasos. También nos indica que debemos hacer lo siguiente con un usuario que no sea root:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Agregamos los otros nodos al clúster lanzando el anterior comando:

kubeadm join 192.168.2.190:6443 --token yssgk3.fuq017u179rjybht \
--discovery-token-ca-cert-hash sha256:a0fdd8e375b4593ca3cb7c38509c5ea75f0b132064c51f421daa67d66bcb28f7

Y ya podremos usar nuestro clúster. Si os surgen problemas podéis resetear la configuración con:

kubeadm reset

Primeros pasos cluster Kubernetes

Lo primero que haremos es comprobar que los nodos se han unido correctamente:

raulunzue@KBMASTER:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kbmaster NotReady master 13m v1.17.0
kubernetes01 NotReady 99s v1.17.0
kubernetes02 NotReady 71s v1.17.0

El estado es NotReady porque aún no se han generado las redes para los Pods:

raulunzue@KBMASTER:~# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
podsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds-amd64 created
daemonset.apps/kube-flannel-ds-arm64 created
daemonset.apps/kube-flannel-ds-arm created
daemonset.apps/kube-flannel-ds-ppc64le created
daemonset.apps/kube-flannel-ds-s390x created

Comprobamos los Pods:

raulunzue@KBMASTER:~# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6955765f44-kjrnv 0/1 Running 0 18m
kube-system coredns-6955765f44-lb59t 0/1 Running 0 18m
kube-system etcd-kbmaster 1/1 Running 0 18m
kube-system kube-apiserver-kbmaster 1/1 Running 0 18m
kube-system kube-controller-manager-kbmaster 1/1 Running 0 18m
kube-system kube-flannel-ds-amd64-97pms 1/1 Running 0 53s
kube-system kube-flannel-ds-amd64-c2t7z 1/1 Running 0 53s
kube-system kube-flannel-ds-amd64-pn22m 1/1 Running 0 53s
kube-system kube-proxy-gvq7w 1/1 Running 0 6m35s
kube-system kube-proxy-h9p6l 1/1 Running 0 18m
kube-system kube-proxy-k57br 1/1 Running 0 7m3s
kube-system kube-scheduler-kbmaster 1/1 Running 0 18m

Y volvemos a revisar que ahora están como Ready:

raulunzue@KBMASTER:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kbmaster Ready master 19m v1.17.0
kubernetes01 Ready 7m51s v1.17.0
kubernetes02 Ready 7m23s v1.17.0

Así ya tenemos operativo nuestro clúster de Kubernetes.

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Instalar cluster Kubernetes en Debian se publicó primero en Blog VMware y Citrix.

Dhcp error Synology ovs-bond

$
0
0

Dhcp error Synology ovs-bond

Os enseñamos a resolver un problema al intentar configurar DHCP Server en vuestra NAS Synology.

Decir que a mí personalmente se me dio al intentar restaurar un backup desde Hyper Backup. Tengo un bond con varias interfaces ethernet de la NAS Synology DS 1515+. Cuando configuraba el servidor para habilitarlo:

dhcp-error-synology-ovs-bond-1

Al pulsar OK, se me producía el error «El rango DHCP de interfaces ovs_bond0 y ovs_ovs_bond0 está en conflicto»:

dhcp-error-synology-ovs-bond-2

Habilitamos SSH e intentamos entrar con nuestro administrador:

ssh admin@IPSERVIDOR

dhcp-error-synology-ovs-bond-3

Para hacer lo que necesitamos, debemos ser root, así que escribimos:

sudo -i

dhcp-error-synology-ovs-bond-4

Nos desplazamos hasta /etc/dhcpd:

cd /etc/dhcpd

Si revisamos la carpeta, vemos que existen configuraciones antiguas, y de ahí el error:

dhcp-error-synology-ovs-bond-5

Así que generamos un carpeta de backup y movemos todo ahí:

mkdir backup

mv * backup/

dhcp-error-synology-ovs-bond-6

De esta manera, ya podremos configurar nuestro dhcp server en Synology.

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Dhcp error Synology ovs-bond se publicó primero en Blog VMware y Citrix.

Instalar monitorización Zabbix en Centos 8

$
0
0

Instalar monitorización Zabbix en Centos 8

Hoy os voy a mostrar como instalar un sistema de monitorización en linux. En este caso voy a usar Zabbix.

¿Qué es Zabbix?

Zabbix es un sistema de monitorización basado en una arquitectura Servidor / Cliente. ¿Esto qué significa? Que para monitorizar ciertos sistemas, como Windows o Linux, tendremos que instalar un cliente en el recurso a monitorizar y ese cliente enviará los datos a un servidor que los recogerá en base de datos donde son tratados.

Esto no implica que no podamos recoger datos de sistemas que manden trazas SNMP o IPMI entre otros.

Zabbix es un sistema de monitoreo con licencia GPL. Aunque fue desarrollado en 1998, la primera versión estable se liberó a la comunidad en 2004. Hoy en día se ha profesionalizado y se desarrolla principalmente como empresa.

Dispone de un frontend desarrollado en PHP y un backend desarrollado en C. Y puede trabajar sobre diferentes plataformas de bases de datos como Oracle, MySQL, PostgreSQL, DB2 o SQLite.

Funcionalidades principales Zabbix

  • Alto rendimiento y alta capacidad (posibilidad de monitorizar cientos de miles de dispositivos)
  • Auto descubrimiento de servidores y dispositivos de red
  • Monitorización distribuida y una administración web centralizada
  • Agentes nativos en múltiples plataformas
  • Posibilidad de monitorización sin agentes
  • Monitorización JMX
  • Monitorización Web
  • Configuración de permisos por usuarios y grupos
  • Métricas SLA y ITIL
  • Sistema flexible de notificación de eventos (Email, XMPP, etc)

ENLACE PROYECTO: https://www.zabbix.com/ 

instalar-monitorizacion-zabbix-en-centos-8-1

Instalación dependencias Zabbix Server en linux Centos 8

Lo primero que haremos es instalar Apache con el siguiente comando:

[root@zabbix01 ~]# dnf -y install @httpd

Habilitamos el servidor Apache:

[root@zabbix01 ~]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

Comprobamos el estado del servidor web:

[root@zabbix01 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor prese>
Active: active (running) since Wed 2019-12-18 21:50:00 CET; 1min 11s ago
Docs: man:httpd.service(8)
Main PID: 11487 (httpd)
Status: "Running, listening on: port 443, port 80"
Tasks: 213 (limit: 24012)
Memory: 28.5M
CGroup: /system.slice/httpd.service
├─11487 /usr/sbin/httpd -DFOREGROUND
├─11488 /usr/sbin/httpd -DFOREGROUND
├─11489 /usr/sbin/httpd -DFOREGROUND
├─11490 /usr/sbin/httpd -DFOREGROUND
└─11491 /usr/sbin/httpd -DFOREGROUND

dic 18 21:50:00 zabbix01.negu.local systemd[1]: Starting The Apache HTTP Server>
dic 18 21:50:00 zabbix01.negu.local httpd[11487]: Server configured, listening >
dic 18 21:50:00 zabbix01.negu.local systemd[1]: Started The Apache HTTP Server.

Yo deshabilito Selinux para estos primeros pasos:

[root@zabbix01 ~]# setenforce 0
[root@zabbix01 ~]# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
[root@zabbix01 ~]# cat /etc/selinux/config | grep SELINUX=
# SELINUX= can take one of these three values:
SELINUX=permissive

Instalamos dependencias, en este caso PHP:

[root@zabbix01 ~]# dnf module -y install php:7.2
[root@zabbix01 ~]# dnf -y install php php-pear php-cgi php-common php-mbstring php-snmp php-gd php-xml php-mysqlnd php-gettext php-bcmath php-json php-ldap

Validamos:

[root@zabbix01 ~]# php -v
PHP 7.2.11 (cli) (built: Oct 9 2018 15:09:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

Y habilitamos:

[root@zabbix01 ~]# systemctl enable --now php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

Comprobamos el estado del servicio:

[root@zabbix01 ~]# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor pre>
Active: active (running) since Wed 2019-12-18 21:56:45 CET; 39s ago
Main PID: 13026 (php-fpm)
Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/s>
Tasks: 6 (limit: 24012)
Memory: 22.9M
CGroup: /system.slice/php-fpm.service
├─13026 php-fpm: master process (/etc/php-fpm.conf)
├─13027 php-fpm: pool www
├─13028 php-fpm: pool www
├─13029 php-fpm: pool www
├─13030 php-fpm: pool www
└─13031 php-fpm: pool www

dic 18 21:56:45 zabbix01.negu.local systemd[1]: Starting The PHP FastCGI Proces>
dic 18 21:56:45 zabbix01.negu.local systemd[1]: Started The PHP FastCGI Process>

Añadimos la zona horaria en el php.ini:

[root@zabbix01 ~]# sed -i "s/^;date.timezone =$/date.timezone = \"Europe\/Madrid\"/" /etc/php.ini

Reiniciamos los servicios:

[root@zabbix01 ~]# systemctl restart httpd php-fpm

Instalación MySQL para Zabbix

Lanzamos la instalación de los paquetes:

[root@zabbix01 ~]# dnf module install mariadb

Confirmamos la versión de MySQL:

[root@zabbix01 ~]# rpm -qi mariadb-server
Name : mariadb-server
Epoch : 3
Version : 10.3.11
Release : 2.module_el8.0.0+35+6f2527ed
Architecture: x86_64
Install Date: mié 18 dic 2019 22:07:41 CET
Group : Unspecified
Size : 87882910
License : GPLv2 with exceptions and LGPLv2 and BSD.
Signature : RSA/SHA256, mié 31 jul 2019 02:20:16 CEST, Key ID 05b555b38483c65d
Source RPM : mariadb-10.3.11-2.module_el8.0.0+35+6f2527ed.src.rpm
Build Date : lun 24 jun 2019 16:25:45 CEST
Build Host : x86-02.mbox.centos.org
Relocations : (not relocatable)
Packager : CentOS Buildsys <bugs@centos.org>
Vendor : CentOS
URL : http://mariadb.org
Summary : The MariaDB server and related files
Description :
MariaDB is a multi-user, multi-threaded SQL database server. It is a
client/server implementation consisting of a server daemon (mysqld)
and many different client programs and libraries. This package contains
the MariaDB server and some accompanying files and directories.
MariaDB is a community developed branch of MySQL.

Habilitamos el servicio:

[root@zabbix01 ~]# systemctl enable --now mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

Realizamos la primera configuración:

[root@zabbix01 ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Volvemos a validar:

[root@zabbix01 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 10.3.11-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SELECT VERSION();
+-----------------+
| VERSION() |
+-----------------+
| 10.3.11-MariaDB |
+-----------------+
1 row in set (0.000 sec)

Generamos una base de datos para Zabbix:

MariaDB [(none)]> CREATE DATABASE zabbix;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@'localhost' IDENTIFIED BY 'contraseñazabbixbd';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> QUIT;
Bye

Instalación Zabbix Server en linux Centos 8

Instalamos el repo de Zabbix:

[root@zabbix01 ~]# dnf -y install https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm

Y bajamos los paquetes necesarios:

[root@zabbix01 ~]# dnf -y install zabbix-server-mysql zabbix-agent zabbix-web-mysql

Como dejo todo en la misma máquina, importamos el schema para no tener problemas:

[root@zabbix01 ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -u zabbix -p zabbix
Enter password:

Editamos el fichero de conexión a la base de datos y agregamos las líneas:

[root@zabbix01 ~]# vi /etc/zabbix/zabbix_server.conf

DBName=zabbix
DBUser=zabbix
DBPassword=contraseñabdzabbix

Habilitamos los servicios:

[root@zabbix01 ~]# systemctl enable --now zabbix-server zabbix-agent
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service → /usr/lib/systemd/system/zabbix-agent.service.

Ajustamos los valores de php:

[root@zabbix01 ~]# vi /etc/php.ini

memory_limit 128M
upload_max_filesize 8M
post_max_size 16M
max_execution_time 300
max_input_time 300
max_input_vars 10000

Habilitamos reglas para el firewall:

[root@zabbix01 ~]# firewall-cmd --add-service=http --permanent
[root@zabbix01 ~]# firewall-cmd --add-port={10051,10050}/tcp --permanent
[root@zabbix01 ~]# firewall-cmd --reload

Reiniciamos servicios:

[root@zabbix01 ~]# systemctl restart httpd php-fpm

Y vamos al navegador para comprobar que ya tenemos Zabbix levantado:

instalar-monitorizacion-zabbix-en-centos-8-2

Revisamos que cumplimos todos los requisitos:

instalar-monitorizacion-zabbix-en-centos-8-3

Introducimos la password para la DB Connection:

instalar-monitorizacion-zabbix-en-centos-8-4

Y ahora elegimos la IP o el nombre del host donde nos conectaremos:

instalar-monitorizacion-zabbix-en-centos-8-5

Pulsamos Next step:

instalar-monitorizacion-zabbix-en-centos-8-6

Pulsamos Finish:

instalar-monitorizacion-zabbix-en-centos-8-7

El usuario es Admin/zabbix por defecto:

instalar-monitorizacion-zabbix-en-centos-8-8

Ya tenemos acceso al dashboard. Ahora hay que alimentarlo:

instalar-monitorizacion-zabbix-en-centos-8-9

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Instalar monitorización Zabbix en Centos 8 se publicó primero en Blog VMware y Citrix.

Cambiar idioma de tu servidor Zabbix al español

$
0
0

Cambiar idioma de tu servidor Zabbix al español

Por defecto, Zabbix está en inglés, y la traducción no está habilitada por defecto.

Por ejemplo, cuando vas a Administration –> Users –> Elegimos uno de los usuarios. Existe un combo en un apartado Language. Si lo desplegamos veremos que sólo existe el idioma inglés por defecto y no podemos seleccionar otros idiomas como Spanish:

cambiar-idioma-de-tu-servidor-zabbix-al-espanol-1

Para modificar esto, vamos a la carpeta:

[root@zabbix01 include]# cd /var/www/html/zabbix/include/

Editamos el fichero:

[root@zabbix01 include]# vi locales.inc.php

Cambiamos false por true:

'es_ES' => ['name' => _('Spanish (es_ES)'), 'display' => true],

Reiniciamos el servicio de apache:

[root@zabbix01 include]# systemctl restart httpd

Y ya tendremos habilitado Spanish:

cambiar-idioma-de-tu-servidor-zabbix-al-espanol-2

Automáticamente, la sesión del usuario estará traducida al español:

cambiar-idioma-de-tu-servidor-zabbix-al-espanol-3

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Cambiar idioma de tu servidor Zabbix al español se publicó primero en Blog VMware y Citrix.

Containers en VMware Project Nautilus (Fusion)

$
0
0

Containers en VMware Project Nautilus (Fusion)

Hoy quiero enseñaros un proyecto de VMware bastante interesante, llamado VMware Project Nautilus.

El objetivo del proyecto es dotar a VMware Fusion, que como sabréis, es el VMware Workstation para MacOS, de soporte nativo para que los usuarios puedan implementar fácilmente containers, kubernetes como máquinas virtuales sobre la aplicación.

Entiendo que esto ya os sonará de lo que ya os pude contar de vSphere en el libro VMware por vExperts, pero sería llevarlo al escritorio de trabajo tradicional de una forma sencilla.

Así que vamos a probarlo sobre mi macOS Catalina recién instalado, lo primero que haremos es bajar de la web del proyecto la versión Preview:

containers-en-vmware-project-nautilus-fusion-0

Instalación VMware Fusion Preview (Nautilus) sobre macOS Catalina

Ahora lanzamos el fichero DMG con un doble clic (decir que yo ya tengo la versión oficial con licencia instalada previamente). Sólo trabaja con la versión 11.5.1, no con otra instalada previamente:

containers-en-vmware-project-nautilus-fusion-2

Como veis es la versión VMware Fusion 20H1:

containers-en-vmware-project-nautilus-fusion-3

Como tengo ya licencia me la detecta:

containers-en-vmware-project-nautilus-fusion-4

Pulsamos Salir:

containers-en-vmware-project-nautilus-fusion-5

Nos pedirá permisos nuevos al arrancarse:

containers-en-vmware-project-nautilus-fusion-6

 

Ejecución de contenedores sobre VMware Fusion en macOS Catalina

Lo primero que haremos después de instalar es Reiniciar el sistema operativo, ya que sino no estarán accesibles los comandos.

Al instalar la versión Preview comprobaréis que tenéis dos instalaciones:

containers-en-vmware-project-nautilus-fusion-7

La versión 11.5.1:

containers-en-vmware-project-nautilus-fusion-8

Y la Preview:

containers-en-vmware-project-nautilus-fusion-9

Para que funcione la Preview nos aseguramos que la aplicación 11.5.1 no esté arrancada. Así que ejecutamos la preview:

containers-en-vmware-project-nautilus-fusion-10

Para poder lanzar containers, deberemos realizar unas tareas previas:

  • Generar un Storage para ellos
  • Crear una red usando la vmnet

Lo haremos con el comando:

vctl system start

containers-en-vmware-project-nautilus-fusion-11

Si vais a modificar la red de una máquina virtual podréis observar que existe una nueva red vmnet9, con un rango concreto donde se ubicarán los containers:

containers-en-vmware-project-nautilus-fusion-12

Ahora lo que haremos es cargar el repositorio de la imagen del contenedor a cargar, por ejemplo nginx:

vctl pull image docker.io/library/nginx:latest

containers-en-vmware-project-nautilus-fusion-13

Y ahora ya podemos lanzar un contenedor desde la imagen:

vctl run container elblogdenegu1 -d -i docker.io/library/nginx:latest

Comprobamos que se ha generado, tiene IP y está corriendo correctamente:

containers-en-vmware-project-nautilus-fusion-14

Compruebas si funciona desde un navegador de tu ordenador:

containers-en-vmware-project-nautilus-fusion-15

Os dejo algunos comandos más:

USAGE:
vctl COMMAND [options]

COMMANDS:
delete Delete images or containers.
describe Show details of containers.
exec Execute a command within containers or virtual machines.
get List images or containers.
help Help about any command
pull Pull images from remote location.
push Push images to remote location.
run Run containers from images.
sh Shell into container-hosting virtual machines.
start Start containers.
stop Stop containers.
system Manage Nautilus Container Engine.
tag Create tag images that refer to the source ones.
version Prints the version of vctl

Ejemplos:

vctl stop container elblogdenegu1
vctl start container elblogdenegu1
vctl get image
vctl get containers -a
vctl sh vm -c elblogdenegu1

La verdad que esta solución facilita la vida bastante para trabajar con Containers si ya tenías VMware Fusion sobre tu macOS Catalina.

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Containers en VMware Project Nautilus (Fusion) se publicó primero en Blog VMware y Citrix.

Instalación Dashboard en Kubernetes

$
0
0

Instalación Dashboard en Kubernetes

El otro día montamos un clúster Kubernetes sobre tres nodos Debian.
Si lo dejamos tal y como está, deberemos trabajar sobre comandos de consola, ya que por defecto, no disponemos de un Dashboard instalado. Para evitar esto, es interesante instalar un dashboard donde gestionar visualmente la plataforma. Lo haremos vía consola HTTP, el proyecto GitHub lo podéis encontrar en el siguiente enlace:

https://github.com/kubernetes/dashboard

Podéis encontrar las instrucciones en la web, pero os lo voy a explicar con detalle.

instalacion-dashboard-en-kubernetes-1

Lo primero que haremos es revisar los nodos y su estado:

raulunzue@KBMASTER:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kbmaster Ready master 66m v1.17.0
kubernetes01 Ready 60m v1.17.0
kubernetes02 Ready 55m v1.17.0

Nos conectamos al master vía SSH. Y haremos la instalación lanzando el siguiente comando en el master. Vamos a usar una versión estable y no la beta:

raulunzue@KBMASTER:~$ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/alternative/kubernetes-dashboard.yaml
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created

Revisamos que se haya creado:

raulunzue@KBMASTER:~$ kubectl get pods --namespace kube-system
NAME READY STATUS RESTARTS AGE
coredns-6955765f44-kddw7 1/1 Running 1 16h
coredns-6955765f44-kkwrc 0/1 Running 0 16h
etcd-kbmaster 1/1 Running 1 16h
kube-apiserver-kbmaster 1/1 Running 1 16h
kube-controller-manager-kbmaster 1/1 Running 1 16h
kube-flannel-ds-amd64-ckhtc 1/1 Running 1 15h
kube-flannel-ds-amd64-xcppv 1/1 Running 0 15h
kube-flannel-ds-amd64-zjl64 1/1 Running 0 15h
kube-proxy-8ghrs 1/1 Running 0 16h
kube-proxy-f4kl5 1/1 Running 1 16h
kube-proxy-r6nv9 1/1 Running 0 15h
kube-scheduler-kbmaster 1/1 Running 1 16h
kubernetes-dashboard-6bf999dbcc-hvtk2 1/1 Running 0 14s

Para mi LAB voy a dar acceso fuera de la máquina virtual, sino sólo podremos verlo sobre localhost:

raulunzue@KBMASTER:~$ kubectl proxy --address 0.0.0.0 --accept-hosts '.*'
Starting to serve on [::]:8001

Con esto ya podremos verlo desde nuestra red. Revisamos el estado del dashboard con el siguiente comando:

http://192.168.2.193:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

instalacion-dashboard-en-kubernetes-2

Desinstalar Dashboard Kubernetes

Si nos vemos en la necesidad de desinstalarlo lo podemos hacer de la siguiente manera:

raulunzue@KBMASTER:~$ kubectl get service -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 443/TCP 16h
kube-system kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 16h
kubernetes-dashboard dashboard-metrics-scraper ClusterIP 10.96.125.89 8000/TCP 14h
kubernetes-dashboard kubernetes-dashboard ClusterIP 10.96.95.227 443/TCP 14h
raulunzue@KBMASTER:~$ kubectl get deployments -A
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system coredns 1/2 2 1 16h
kubernetes-dashboard dashboard-metrics-scraper 1/1 1 1 14h
kubernetes-dashboard kubernetes-dashboard 0/1 1 0 14h
raulunzue@KBMASTER:~$ kubectl delete deployment kubernetes-dashboard --namespace=kubernetes-dashboard
deployment.apps "kubernetes-dashboard" deleted
raulunzue@KBMASTER:~$ kubectl delete deployment dashboard-metrics-scraper --namespace=kubernetes-dashboard
deployment.apps "dashboard-metrics-scraper" deleted
raulunzue@KBMASTER:~$ kubectl get service -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 443/TCP 16h
kube-system kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 16h
kubernetes-dashboard dashboard-metrics-scraper ClusterIP 10.96.125.89 8000/TCP 14h
kubernetes-dashboard kubernetes-dashboard ClusterIP 10.96.95.227 443/TCP 14h
raulunzue@KBMASTER:~$ kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard
service "kubernetes-dashboard" deleted
raulunzue@KBMASTER:~$ kubectl delete service dashboard-metrics-scraper --namespace=kubernetes-dashboard
service "dashboard-metrics-scraper" deleted
raulunzue@KBMASTER:~$ kubectl delete sa kubernetes-dashboard --namespace=kubernetes-dashboard
serviceaccount "kubernetes-dashboard" deleted
raulunzue@KBMASTER:~$ kubectl delete secret kubernetes-dashboard-certs --namespace=kubernetes-dashboard
secret "kubernetes-dashboard-certs" deleted
raulunzue@KBMASTER:~$ kubectl delete secret kubernetes-dashboard-key-holder --namespace=kubernetes-dashboard
secret "kubernetes-dashboard-key-holder" deleted

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Instalación Dashboard en Kubernetes se publicó primero en Blog VMware y Citrix.


Extraer logon de usuarios por Powershell

$
0
0

Extraer logon de usuarios por Powershell

Hoy os voy a enseñar un script que nos facilita sobre manera el extraer el logon de usuarios, por ejemplo en un dominio, por comandos de powershell.

La autoría del script la podéis encontrar en la siguiente ruta:

https://gallery.technet.microsoft.com/scriptcenter/Get-LoggedOnUser-Gathers-7cbe93ea

Módulo:

https://sid-500.com/2018/02/28/powershell-get-all-logged-on-users-per-computer-ou-domain-get-userlogon/

Podemos usar el comando con el script del primer enlace, que tendremos que bajar y ejecutar para extraer los datos:

extraer-logon-de-usuarios-por-powershell-1

O por otra parte, cargar la función en forma de módulo de powershell que nos facilitará más la vida. Y lo cargamos en la siguiente ruta. Hay que generar la carpeta y generar un fichero psm1:

C:\Program Files\WindowsPowerShell\Modules\Get-UserLogon

extraer-logon-de-usuarios-por-powershell-2a

Realizamos una importación y verificamos:

extraer-logon-de-usuarios-por-powershell-3

Y empezamos con los comandos…

Powershell: LOGONS EN TODO EL DOMINIO

Get-UserLogon -All

Powershell: LOGONS EN UNA OU

Get-UserLogon -OU 'ou=Computers,dc=negu,dc=local'

Powershell: LOGONS USUARIOS EN COMPUTER

Get-UserLogon -Computer NEGUAD01

 

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Extraer logon de usuarios por Powershell se publicó primero en Blog VMware y Citrix.

Comandos básicos Proxmox

$
0
0

Comandos básicos Proxmox

Hoy os vamos a enseñar como configurar y gestionar Proxmox mediante comandos de consola.

Aunque la mayoría de acciones se pueden hacer vía gráfica, el poder de linux reside en el comando de consola, así que vamos a explicar algunos de los más comunes para gestionar vuestra infraestructura Proxmox.

Listar máquinas virtuales corriendo en el nodo:

qm list

comandos-basicos-proxmox-1

Saber cuanta memoria asignada tiene una máquina concreta:

root@pve1:~# qm config 101 | grep ^memory
memory: 4096

Las configuraciones de las máquinas virtuales las encontraréis en la ruta:

/etc/pve/qemu-server/

comandos-basicos-proxmox-2

Los discos, por defecto, los encontráis en:

/var/lib/vz/images/10X

Podéis también utilizar comandos para crear backups de una máquina virtual:

vzdump ID

Restaurar un backup:

vzrestore ID o qmrestore ID

comandos-basicos-proxmox-6

Saber la versión de Proxmox:

root@pve1:~# pveversion
pve-manager/6.1-5/9bf06119 (running kernel: 5.3.13-1-pve)

Realizar un test del host físico:

root@pve1:~# pveperf
CPU BOGOMIPS: 31199.48
REGEX/SECOND: 4062614
HD SIZE: 54.63 GB (/dev/mapper/pve-root)
BUFFERED READS: 439.13 MB/sec
AVERAGE SEEK TIME: 0.62 ms
FSYNCS/SECOND: 329.09
DNS EXT: 418.35 ms
DNS INT: 368.47 ms (negu.local)

Arranque, parada, eliminación,… de una máquina virtual:

qm monitor connect to vm control monitor
qm start start vm
qm reboot reboot vm (shutdown, start)
qm shutdown gracefully stop vm (send poweroff)
qm stop kill vm (immediate stop)
qm reset reset vm (stop, start)
qm suspend suspend vm
qm resume resume vm
qm destroy destroy vm (delete all files)

qm cdrom [] set cdrom path.
qm cdrom [] eject eject cdrom

qm unlink delete unused disk images
qm vncproxy open vnc proxy
qm list list all virtual machines

Apagar todas vuestras máquinas virtuales:

qm shutdown all

Listar todas las particiones:

comandos-basicos-proxmox-7

Comandos Proxmox para clúster

Listar todos los componentes del clúster:

pvesh get /cluster/resources

comandos-basicos-proxmox-9

Sólo máquinas virtuales:

pvesh get /cluster/resources --type vm

comandos-basicos-proxmox-10

Generar un nuevo clúster:

pvecm create NEGUCLUSTER

Revisar el estado del clúster:

pvecm status

comandos-basicos-proxmox-3

Para añadir un nodo en el clúster lo podemos hacer vía:

pvecm add IPNODE

Estado de los nodos:

pvecm nodes

comandos-basicos-proxmox-4

Si las máquinas virtuales están en una LUN, por ejemplo, encontraréis los discos en la siguiente ruta:

fdisk -l

comandos-basicos-proxmox-5

Comandos de Storage en Proxmox

Listado de discos de la máquina virtual:

ls /dev/disk/by-id/

Listar todos los storages del host físico:

pvesm status

comandos-basicos-proxmox-8

Redimensionar disco de máquina virtual Proxmox:

qm resize

Otros comandos de storage relacionados:

pvesm scan cifs [OPTIONS] pvesm scan glusterfs
pvesm scan iscsi
pvesm scan lvm
pvesm scan lvmthin
pvesm scan nfs
pvesm scan zfs

pvesm add [OPTIONS] pvesm remove
pvesm set [OPTIONS]

pvesm alloc [OPTIONS] pvesm free [OPTIONS] pvesm list [OPTIONS]

pvesm status [OPTIONS]

pvesm export [OPTIONS] pvesm extractconfig
pvesm import [OPTIONS] pvesm path

pvesm help [] [OPTIONS]

Espero que os sea útil…

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Comandos básicos Proxmox se publicó primero en Blog VMware y Citrix.

Crear containers (Docker) sobre Kubernetes

$
0
0

Crear containers (Docker) sobre Kubernetes

El otro día os explicamos cómo crear un cluster de Kubernetes sobre Debian. Partimos de 3 nodos:

  • KBMASTER: Master del clúster de Kubernetes
  • KUBERNETES01: Nodos del clúster de Kubernetes
  • KUBERNETES02: Nodo del clúster de Kubernetes

Hoy vamos a explicar las operaciones básicas para gestionar contenedores o containers sobre dicha plataforma de Kubernetes.

Lo primero sería hacer un pequeño resumen de los diferentes componentes, os dejo el enlace de la entrada sobre conceptos básicos en Kubernetes:

Para el despliegue de una aplicación utilizaremos el comando kubectl que es el equivalente a docker-compose.

Crear un Pod en Kubernetes

Lo primero que generaremos es un Pod, que como ya explicamos es uno o varios containers unidos entre sí para su administración y creación de redes.

Para esta prueba utilizaremos el más básico que existe como es hello-app, que constará de un solo container. Lo generaremos con el comando kubectl run:

kubectl run hello-world-pod-elblogdenegu --image=gcr.io/google-samples/hello-app:2.0 --generator=run-pod/v1

crear-containers-docker-sobre-kubernetes-2

Podemos verificar su estado con el siguiente comando:

kubectl get pods -o wide

También nos dará una IP y en qué nodo corre:

crear-containers-docker-sobre-kubernetes-3

Si queremos saber más datos del Pod podemos usar:

kubectl describe pod hello-world-pod-elblogdenegu

crear-containers-docker-sobre-kubernetes-5

Pero existen dos «pegas» con este Pod:

  • Por una parte dispone de una IP interna. Y sólo podremos verificar su estado internamente, por ejemplo con CURL. Lo haremos desde el nodo donde corre:
    • curl http://10.69.2.8:8080

crear-containers-docker-sobre-kubernetes-4

  • No se ha generado un Deployment, y eso implica que somos responsables del estado del Pod y sus containers (y para olvidarnos un poco de esto queremos usar Kubernetes)

Eliminar Pod en Kubernetes

Podemos eliminar un Pod en Kubernetes de la siguiente forma:

kubectl delete pod hello-world-pod-elblogdenegu

crear-containers-docker-sobre-kubernetes-6

Así que seguimos…

Crear deployment de Kubernetes

Si generamos un Pod, necesitaremos un sistema que vigile que funcione constantemente. Lo que nos va a permitir un deployment es verificar ese Pod y reiniciar automáticamente los containers que lo componen si finalizan. Esto nos va a permitir escalar de forma correcta los Pods que construyamos.

Os explico cómo generar un Deployment en Kubernetes y que se genere un Pod automáticamente. Generamos y comprobamos tanto que existe un deployment como un pod:

raulunzue@KBMASTER:~$ kubectl create deployment hello-world-deployment-elblogdenegu --image=gcr.io/google-samples/hello-app:2.0
deployment.apps/hello-world-deployment-elblogdenegu created
raulunzue@KBMASTER:~$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
hello-world-deployment-elblogdenegu 1/1 1 1 5s
raulunzue@KBMASTER:~$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hello-world-deployment-elblogdenegu-6dbbf956cf-q6879 1/1 Running 0 10s 10.69.2.10 kubernetes02

crear-containers-docker-sobre-kubernetes-7a

Eliminar Deployment en Kubernetes

Podemos eliminar un Deployment en Kubernetes de la siguiente forma:

kubectl delete deployment hello-world-deployment-elblogdenegu

crear-containers-docker-sobre-kubernetes-9

Ver eventos en el cluster de Kubernetes

Podemos revisar todo lo que pasa en el cluster a través del siguiente comando:

kubectl get events

crear-containers-docker-sobre-kubernetes-10

Crear Service en Kubernetes

De nada sirve tener una plataforma que sólo podamos ver desde la red interna, ya que no podremos trabajar con nuestros despliegues o aplicaciones. Para eso tenemos que tener claro otro concepto como son los Service.
Los cuales nos permiten exponer nuestras apps independientemente donde corran dentro del clúster de Kubernetes. Si revisamos qué services tenemos actualmente en el clúster, veremos que no existe ninguna app:

kubectl get services

crear-containers-docker-sobre-kubernetes-11

La idea es publicar la que hemos generado en el deployment, y lo haremos con el siguiente comando:

kubectl expose deployment hello-world-deployment-elblogdenegu --type=LoadBalancer --name=hello-world-service-elblogdenegu --port=8082

Volvemos a revisar los services y la IP del Cluster asociada al service. Si EXTERNAL-IP se queda en pending, hay que esperar unos minutos:

crear-containers-docker-sobre-kubernetes-16

Podemos extraer los datos del service de la siguiente forma:

kubectl describe services hello-world-service-elblogdenegu

crear-containers-docker-sobre-kubernetes-17

Comprobaríamos el acceso de la siguiente forma:
curl http://<external-ip>:<port>

Eliminar Service en Kubernetes

Para eliminar el service usáis el siguiente comando:

kubectl delete service hello-world-service-elblogdenegu

crear-containers-docker-sobre-kubernetes-14

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Crear containers (Docker) sobre Kubernetes se publicó primero en Blog VMware y Citrix.

Monitorizar página web con Zabbix

$
0
0

Monitorizar página web con Zabbix

Hoy os voy a enseñar como añadir a vuestra monitorización con Zabbix una página web.

En mi caso, utilizaré el propio blog, ya que el servidor de Zabbix lo tengo corriendo fuera de la infraestructura web (sobre una máquina virtual en mi lab de Synology).

Lo primero de todo nos logueamos sobre nuestro servidor Zabbix.

ConfiguraciónEquiposZabbix Server — Pulsamos sobre Aplicaciones:

monitorizar-pagina-web-con-zabbix-0

Pulsamos Crear Aplicación:

monitorizar-pagina-web-con-zabbix-2

Le damos un nombre que reutilizaremos con otros sitios webs y pulsamos Agregar:

monitorizar-pagina-web-con-zabbix-3a

Aparecerá en el listado la aplicación generada:

monitorizar-pagina-web-con-zabbix-4

 

 

Ahora vamos a Web escenarios:

monitorizar-pagina-web-con-zabbix-5

Pulsamos en la esquina derecha superior sobre el botón Crear escenario web:

monitorizar-pagina-web-con-zabbix-6

Rellenamos los apartados Nombre, Aplicación, Intervalo de actualización, Intentos y Agente:

monitorizar-pagina-web-con-zabbix-7

Ahora vamos a Pasos y pulsamos Agregar:

monitorizar-pagina-web-con-zabbix-8

Y agregamos los siguientes datos, donde estarán la URL, el código web que se busca (el 200 significa «La solicitud se ha procesado correctamente»), timeout,…

monitorizar-pagina-web-con-zabbix-9

Ahora volvemos a pulsar Agregar:

monitorizar-pagina-web-con-zabbix-10

Y ya tenemos nuestro sitio web monitorizado. Habrá que esperar unos minutos para que se generen estadísticas (5 minutos aproximadamente):

monitorizar-pagina-web-con-zabbix-11

Para revisar las estadísticas iremos a MonitorizaciónWeb:

monitorizar-pagina-web-con-zabbix-12

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Monitorizar página web con Zabbix se publicó primero en Blog VMware y Citrix.

Qué es DevOps

$
0
0

Qué es DevOps

Este año 2020, como casi todos, me he marcado pequeñas metas, una de ellas es la salud (estoy saliendo del pozo de una neuritis vestibular aguda, que me ha roto el equilibrio, he tenido que volver a aprender a moverme y me ha tenido en cama más de mes y medio, quizás por estrés, nunca lo sabré…) y otra es mejorar en lo profesional. Llevo casi 20 años de profesión, he conseguido metas que hace unos años no me habría planteado ni imaginado. Creo que estoy bien considerado en mi profesión (no me ha supuesto nunca grandes problemas buscar nuevos retos profesionales), pero quizás es porque no soy conformista y siempre creo que necesito aprender para mejorar. Y el reto de este año es orientarme lo más posible a un perfil DevOps. ¿Pero qué es ser un DevOps?

DevOps, Developer + Operations, es uno de esos términos que se usa estos últimos años en este mundo TIC en donde nos encontramos. Pero realmente, ¿qué es DevOps? ¿o qué es un DevOps Engineer?

DevOps está fuertemente unido desde su origen a las metodologías ágiles de desarrollo software. Apareció en una convención como término sobre 2008-2009. Y la repercusión ha sido máxima estos últimos años.

que-es-Devops-2

¿Qué definiciones de DevOps podemos encontrar en Internet?

DevOps es un conjunto de prácticas destinadas a reducir el tiempo entre el compromiso de un cambio en un sistema y el cambio que se coloca en la producción normal, al tiempo que garantiza una alta calidad

DevOps engineer es un profesional de la tecnología de la información (TI) que trabaja con desarrolladores de software, operadores de sistemas (SysOps) y otro personal de TI de producción para supervisar las publicaciones de códigos.

Mi interpretación de lo que es realmente DevOps está más cerca de que es una metodología para unir a administradores de sistemas con desarrolladores para agilizar los procedimientos. En cuanto a un DevOps Engineer, lo podríamos interpretar como un perfil un poco navaja suiza. Que realmente no es necesariamente ni de sistemas, ni de desarrollo ni de gestión de proyectos. Una persona con una cierta madurez laboral, que le ha proporcionado una visión diferente que podría tener un desarrollador o un administrador de sistemas.

Y creo que en esto encajo perfectamente y es interesante intentarlo. Aunque me he llegado a especializar en virtualización, he realizado trabajos de todo tipo en mi vida, desde desarrollo web, seo, administración, diseño e implementación de grandes y pequeñas infraestructuras IT, estuve varios años como especialista de comunicaciones, he tenido cargos como analista de sistemas, COO (Director de Operaciones en una empresa TIC), gestión de proyectos desde su fase de desarrollo hasta su puesta en producción,…

Creo que es un perfil que encaja en lo que yo quiero para mi futuro laboral, pero tengo que trabajar aún para llegar a ello.

¿De qué debería saber un DevOps Engineer?

Vamos a detallar lo que debería cubrir un DevOps Engineer en su conocimiento desde mi punto de vista:

  • Manejar a un nivel avanzado sistemas operativos:Es esencial dominar uno de los sistemas operativos principales, ya sea Windows o Linux. Personalmente, creo que el segundo, dado el impulso y la fuerza que están cobrando Kubernetes y Docker, puede estar más valorado en esta profesión a futuro (sólo es opinión personal).
  • Programación:Uno de mis puntos flacos es la programación, creo que tampoco tienes que ser un dios de la programación si tienes buenos desarrolladores a tu lado. Pero es esencial manejar conceptos como FrontEnd, BackEnd, WebService,… Después de darle muchas vueltas, creo que me decidiré por Python como lenguaje de programación a aprender.
  • Gestión servicios Cloud:Hoy día es imposible que un perfil DevOps no esté relacionado con una infraestructura cloud (Amazon AWS, Azure,…)
  • Herramientas de automatización:Es necesario mejorar los procesos con automatizaciones, y para ello existen múltiples herramientas. Yo me centraré en Ansible (podrían servir también Puppet, Chef,…)
  • Versionados:Un DevOps Engineer debería manejarse en el control de versiones cuando se realiza un desarrollo. Para ello, hay que aprender a manejar principalmente sobre Git (GitHub o GitLab)
  • Virtualización:Hoy día, es importante saber de virtualización en general. Ya sea para trabajar en tu propio lab o manejarte en producción. En estos conceptos, es importante ponerse al día en temas tan de moda como Containers, Docker,…
  • CI/CD:Integración continua y entrega continua. Para ello Jenkins es importante. En concreto, la CI/CD incorpora la automatización continua y el control permanente en todo el ciclo de vida de las aplicaciones, desde las etapas de integración y prueba hasta las de distribución e implementación.
  • Orquestación:Cuando los desarrollos alcanzan niveles altos de implementación, es importante utilizar herramientas que nos permitan un escalado alto como Kubernetes.
  • Monitoreo:Este perfil debería saber monitorizar de forma activa y proactiva la infraestructura de desarrollo y las apps que trabajen en ella. Para ello usaré Zabbix.
  • Procesos:Es esencial manejar metodologías de trabajo, los flujos, sus buenas prácticas y la gestión de equipos de desarrollo. Para tomar buenas decisiones en momentos de apuro.
  • Seguridad:Aunque quizás no sea el cometido, yo personalmente buscaría un perfil que tenga conceptos de seguridad informática, que ayude a su equipo a crear apps bajo una infraestructura segura desde el minuto 0.

Espero os parezca interesante…

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Qué es DevOps se publicó primero en Blog VMware y Citrix.

Deshabilitar complemento Internet Explorer por GPO

$
0
0

Deshabilitar complemento Internet Explorer por GPO

Os explicamos como deshabilitar un complemento en Internet Explorer mediante GPO de directorio activo.

Visualmente lo podéis hacer desde Administrar complementos:

deshabilitar-complemento-internet-explorer-por-gpo-1

Lo vamos a hacer con Java. Lo que buscamos es el ID para llevarlo a la GPO:

deshabilitar-complemento-internet-explorer-por-gpo-2

Si pulsáis en más información podemos copiarlo:

deshabilitar-complemento-internet-explorer-por-gpo-3

Os dejo los IDs y las settings que pueden ser por máquina o por usuario:

{761497BB-D6F0-462C-B6EB-D4DAF1D92D43}

{DBC80044-A445-435B-BC74-9C25C1C588A9}

<span style="font-weight: bold; background: white;">Computer Configuration\Policies\Administrative Templates\Windows Components\Internet Explorer\Security Features\Add-on Management </span>

<span style="font-weight: bold; background: white;">User Configuration\Policies\Administrative Templates\Windows Components\Internet Explorer\Security Features\Add-on Management</span>

deshabilitar-complemento-internet-explorer-por-gpo-4

Los añadimos con el valor 0:

<span style="font-family: Calibri; font-size: 11.0pt;">Quick description for </span><span style="font-weight: bold; font-family: 'Segoe UI'; font-size: 9.1pt; color: #2a2a2a; background: white;">Value</span><span style="font-family: Calibri; font-size: 11.0pt;">:</span>

  • <span style="font-family: 'Segoe UI'; font-size: 9.1pt; background: white;">0 - The add-on is disabled, and users cannot manage the add-on from the user interface.</span>

  • <span style="font-family: 'Segoe UI'; font-size: 9.1pt; background: white;">1 - The add-on is enabled, and users cannot manage the add-on from the user interface.</span>

  • <span style="font-family: 'Segoe UI'; font-size: 9.1pt; background: white;">2 - The add-on is enabled, and users can manage the add-on from the user interface.</span>

deshabilitar-complemento-internet-explorer-por-gpo-5

Sin aplicar:

deshabilitar-complemento-internet-explorer-por-gpo-6

Aplicado:

deshabilitar-complemento-internet-explorer-por-gpo-7

También se modifica visualmente en el panel de complementos, se deshabilita:

deshabilitar-complemento-internet-explorer-por-gpo-8

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Deshabilitar complemento Internet Explorer por GPO se publicó primero en Blog VMware y Citrix.

Script Powershell para cambiar owner carpetas y archivos

$
0
0

Script Powershell para cambiar owner carpetas y archivos

Hoy os voy a mostrar un script para cambiar el Owner de forma automatizada en un recurso compartido de perfiles. En mi caso, un share de perfiles UPM de Citrix.

###########################################
####### RAUL UNZUE - ELBLOGDENEGU #########
###########################################
########## Script cambio owner ############
###########################################

# EMPEZAMOS LOG:
Start-Transcript ("c:\temp\logs\OWNER-ScriptLog{0:yyyyMMdd-HHmm}.txt" -f (Get-Date))

# SHARES PERFILES
$origen = "\\SHARE\perfiles_citrix\OLD"
$destino = "\\SHARE\perfiles_citrix\NEW"

# CARGA PERFILES
#Si queremos una cadena de perfiles:
#$profiles = 'elblogdenegu','raulunzue','negu','pepe'
#Solamente un perfil:
$profiles = 'elblogdenegu'
# BUCLE
foreach ($profile in $profiles)
{
#$p = $profile.Name
$p = $profile

# USUARIO A PROCESAR
Write-Output "Comenzamos con el usuario: $p"

# COPIA DE SEGURIDAD OWNER
Write-Output "Backup ACLs para usuario: $p"
icacls "$origen\$p" /save C:\temp\Backup\ACL_Backup_$p.txt > C:\temp\Logs\ACL_Backup_$p.log

# RESETEAR PERMISOS
Write-Output "Resetear permisos para usuario: $p"
icacls "$origen\$p" /T /Q /C /RESET

# CAMBIAR OWNER A NUESTRO SYSADMIN (USUARIO QUE EJECUTA EL SCRIPT)
Write-Output "Modificamos Owner carpeta: $p"
takeown.exe /f $origen\$p /r /d S

# AGREGAR PERMISOS FULL CONTROL ADMINS DEL DOMINIO
Write-Output "Full Control admins en carpeta: $p"
icacls.exe "$origen\$p" /grant:r "NEGU\Admins. del dominio:(OI)(F)" /T

# COPIAR FICHEROS PERFIL
Copy-Item –Path "$origen\$p" -Recurse –Destination $destino

# MOVER PERFIL
# Move-Item –Path "$origen\$p" –Destination $destino

# VOLVER PERMISOS OWNER ORIGINAL
Write-Output "Restauramos OWNER para carpeta: $p"
# Si dejamos el perfil original porque copiamos DESCOMENTAR si movemos COMENTAR
# icacls.exe "$origen\$p" /setowner "NEGU\$p" /T /C /L /Q
icacls.exe "$destino\$p" /setowner "NEGU\$p" /T /C /L /Q

# RESTAURAR PERMISOS ACLs
Write-Output "Restauramos ACLs para usuario: $p"
# Si dejamos el perfil original porque copiamos DESCOMENTAR si movemos COMENTAR
# icacls.exe "$origen" /restore C:\temp\Backup\ACL_Backup_$p.txt
icacls.exe "$destino" /restore C:\temp\Backup\ACL_Backup_$p.txt

# VERIFICAR
# icacls "$destino\$p" /verify /T

# LOG
Add-Content c:\temp\Logs\OWNER-Perfiles-Procesados.log "$p"
}

# Paramos log
Stop-Transcript

script-powershell-para-cambiar-owner-carpetas-y-archivos-1

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Script Powershell para cambiar owner carpetas y archivos se publicó primero en Blog VMware y Citrix.


Comando powershell para saber número de serie PC

$
0
0

Comando powershell para saber número de serie PC

Entrada rápida, os enseño unos comandos que nos permiten extraer el Serial number de vuestro pc vía comando de Powershell:

PS C:\Users\runzue> Get-WmiObject win32_bios | Format-List SerialNumber
SerialNumber : 5CD81626PA

PS C:\Users\runzue> gwmi win32_bios | fl SerialNumber
SerialNumber : 5CD81626PA

PS C:\Users\runzue> wmic csproduct get identifyingnumber
IdentifyingNumber
5CD81626PA

PS C:\Users\runzue> wmic bios get serialnumber
SerialNumber
5CD81626PA

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Comando powershell para saber número de serie PC se publicó primero en Blog VMware y Citrix.

Borrar cache Internet Explorer por comando

$
0
0

Borrar cache Internet Explorer por comando

Otra entrada rápida, como borramos la caché de Internet Explorer vía comando CMD o Powershell:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255 (Deletes ALL History)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1 (Deletes History Only)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2 (Deletes Cookies Only)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 (Deletes Temporary Internet Files Only)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16 (Deletes Form Data Only)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32 (Deletes Password History Only)

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Borrar cache Internet Explorer por comando se publicó primero en Blog VMware y Citrix.

Escanear storage iSCSI en Proxmox

$
0
0

Escanear storage iSCSI en Proxmox

Hoy vamos a explicaros como ampliar un recurso de storage de Proxmox, compartido por iSCSI.

Lo primero que deberemos hacer es ampliar la LUN. Yo por ejemplo, tengo una Synology, que es la que da el recurso compartido.

Simplemente, la he editado y ampliado el espacio asignado:

escanear-storage-iscsi-en-proxmox-0

Ahora nos conectamos vía SSH a uno de los nodos. Lanzamos el comando «pvscan» para ver los storages actuales:

escanear-storage-iscsi-en-proxmox-1

Para que se re-escanee el espacio que hemos ampliado lanzamos «iscsiadm -m mode -R»

escanear-storage-iscsi-en-proxmox-2

Mi volumen es /dev/sdd, así que lanzamos el comando «pvresize -v /dev/sdd»

escanear-storage-iscsi-en-proxmox-3

Y volvemos a revisar, veremos que el volumen ya está ampliado:

escanear-storage-iscsi-en-proxmox-4

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Escanear storage iSCSI en Proxmox se publicó primero en Blog VMware y Citrix.

Instalar Nutanix AHV en modo nested en Proxmox

$
0
0

Instalar Nutanix AHV en modo nested en Proxmox

Hoy vamos a hablar de Nutanix en su versión Community Edition, que nos permite probar varios de sus productos de forma gratuita.

Yo voy a aprovechar mi laboratorio Proxmox para realizar la instalación de su Hypervisor AHV / Acrópolis en modo Nested.

Si queréis más información o ver donde sacar la imagen seguir el siguiente enlace:

https://portal.nutanix.com/#/page/docs/details?targetId=Nutanix-Community-Edition-Getting-Started:Nutanix-Community-Edition-Getting-Started

instalar-nutanix-ahv-en-modo-nested-en-proxmox-1

Tengo una imagen en formato OVF, después de descomprimir el fichero ZIP, con 3 discos VMDK:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-2

Si editáis el fichero OVF podéis ver las características de la imagen:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-3b

Deberemos crear el siguiente fichero sobre nuestro host proxmox y agregar el siguiente contenido:

vi /etc/modprobe.d/kvm-intel.conf

options kvm ignore_msrs=y
options kvm-intel nested=Y ept=Y

Ahora comprobamos:

modprobe -r kvm-intel kvm; modprobe kvm kvm-intel

Es posible que os genere un error:

instalar-vmware-esxi-en-proxmox-15

Simplemente tendréis que reiniciar el host.

Importar OVF en Proxmox

Lo primero que vamos a hacer es copiar los ficheros a nuestro servidor. Lo podemos hacer vía SSH con Filezilla, subimos la imagen IMG descomprimida:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-5

Nos conectamos a nuestra consola Proxmox y vamos a generar una nueva máquina virtual:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-3

Le damos el nombre:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-4

Como Guest OS en Other y marcando Do not use any media:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-6

Dejamos System por defecto:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-7

Marcamos SSD Emulation

instalar-nutanix-ahv-en-modo-nested-en-proxmox-8

En Type marcamos host:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-9

Memoria de unos 16GB:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-10

Para Network, model VMware vmxnet3:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-11

Pulsamos Finish:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-12

En segundo tendremos la máquina virtual:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-13

Buscamos el .conf de nuestra máquina virtual:

root@pve1:/dev/LUN01-SYNOLOGY# find / -type f -name "112.conf"
/etc/pve/nodes/pve1/qemu-server/112.conf

El contenido actual:

root@pve1:/dev/LUN01-SYNOLOGY# cat /etc/pve/nodes/pve1/qemu-server/112.conf
bootdisk: ide0
cores: 4
cpu: host
ide0: LUN01:vm-112-disk-0,size=32G,ssd=1
ide2: none,media=cdrom
memory: 16384
name: NUTANIXAHV01
net0: vmxnet3=3A:68:50:8E:46:11,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: other
scsihw: virtio-scsi-pci
smbios1: uuid=0207e054-5bfd-4dd3-b110-c0f03eba455e
sockets: 1
vmgenid: 0df2a2e1-9036-4204-92e8-cd5ccde35290

Convertir discos VMDK a QCOW2 en Proxmox

Revisamos donde tenemos nuestros discos VMDK asociados al fichero OVF:

root@pve1:/dev/LUN01-SYNOLOGY# find / -type f -name "*.vmdk"
/mnt/pve/CEPH01/template/iso/disk-0.vmdk
/mnt/pve/CEPH01/template/iso/disk-2.vmdk
/mnt/pve/CEPH01/template/iso/disk-1.vmdk
/mnt/pve/cephfs/template/iso/disk-0.vmdk
/mnt/pve/cephfs/template/iso/disk-2.vmdk
/mnt/pve/cephfs/template/iso/disk-1.vmdk

Los tendremos que convertir a QCOW2:

root@pve1:/dev/LUN01-SYNOLOGY# qemu-img convert -f vmdk /mnt/pve/CEPH01/template/iso/disk-0.vmdk -O qcow2 /mnt/pve/CEPH01/template/iso/disk-0.qcow2
root@pve1:/dev/LUN01-SYNOLOGY# qemu-img convert -f vmdk /mnt/pve/CEPH01/template/iso/disk-1.vmdk -O qcow2 /mnt/pve/CEPH01/template/iso/disk-1.qcow2
root@pve1:/dev/LUN01-SYNOLOGY# qemu-img convert -f vmdk /mnt/pve/CEPH01/template/iso/disk-2.vmdk -O qcow2 /mnt/pve/CEPH01/template/iso/disk-2.qcow2

Eliminamos el disco de máquina virtual en Proxmox

Tendremos que hacer un Detach:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-15

Lo eliminamos:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-16

Importar OVF / OVA

Ahora voy al repositorio donde tengo los ficheros, si no habéis descomprimido antes os dejo el comando:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-17

Ahora importamos los discos:

qm importdisk 112 disk-0.qcow2 LUN01

qm importdisk 112 disk-1.qcow2 LUN01

qm importdisk 112 disk-2.qcow2 LUN01

instalar-nutanix-ahv-en-modo-nested-en-proxmox-18

Si no habéis convertido los discos VMDK:

qm importdisk 112 disk-0.vmdk LUN01 -format qcow2

Una vez importados los discos, los deberemos asociar:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-19

Elegimos uno a uno, pulsando Edit:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-20

Y veremos los discos montados:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-21

Arrancamos la máquina virtual, tendremos que cambiar el boot:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-22b

Tendremos que arrancar de Virtio disk:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-22

Y arrancará Nutanix Community Edition:

instalar-nutanix-ahv-en-modo-nested-en-proxmox-23

Ya os explicaré como trabajamos a partir de aquí…

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Instalar Nutanix AHV en modo nested en Proxmox se publicó primero en Blog VMware y Citrix.

Kubernetes agregar nodo a cluster existente

$
0
0

Kubernetes agregar nodo a cluster existente

Hoy voy a explicaros como eliminar un nodo en Kubernetes, y agregar uno nuevo con el mismo nombre.

Mi situación en el lab Kubernetes con Debian sobre Proxmox, es que tengo 3 nodos, un master y dos nodos. Uno de estos últimos, me da problemas y se queda con un estado NotReady, así que no puedo generar Pods en él. No he logrado revertir el estado, ni reiniciando servicios, no funciona el upgrade de la versión en él,…vamos todo lo que se me ha ocurrido no ha funcionado.

Así que voy a clonar el nodo 2, le cambio el hostname y la IP por el original.

Partimos de esta situación:

raulunzue@KBMASTER:~$ kubectl get node
NAME           STATUS     ROLES    AGE   VERSION
kbmaster       Ready      master   69d   v1.17.4
kubernetes01   NotReady     69d   v1.17.0
kubernetes02   Ready     69d   v1.17.4

Así que elimino el nodo del cluster:

raulunzue@KBMASTER:~$ kubectl delete node kubernetes01
node "kubernetes01" deleted

Y voy recopilando datos que luego me servirán:

raulunzue@KBMASTER:~$ kubectl cluster-info
Kubernetes master is running at https://192.168.2.193:6443
KubeDNS is running at https://192.168.2.193:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use ‘kubectl cluster-info dump’.

Como el token caduca en unas horas, para agregar el nodo, genero uno nuevo desde el master:

raulunzue@KBMASTER:~$ kubeadm token list
raulunzue@KBMASTER:~$ kubeadm token create --print-join-command
W0317 00:49:40.568138   14414 validation.go:28] Cannot validate kubelet config - no validator is available
W0317 00:49:40.568484   14414 validation.go:28] Cannot validate kube-proxy config - no validator is available
kubeadm join 192.168.2.193:6443 --token w3zozn.ta0i47219yz2s14s     --discovery-token-ca-cert-hash sha256:44706d8ad99b18b8a18e78260b4c42a916271fcc152a30cc3201d2b3b212ed78

Ahora si puedo listarlo:

raulunzue@KBMASTER:~$ kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
w3zozn.ta0i47219yz2s14s 2h 2020-03-18T00:49:40+01:00 authentication,signing system:bootstrappers:kubeadm:default-node-token

Reseteamos las configuraciones del nodo nuevo, ya que es un clon del nodo 2:

root@KUBERNETES01:~# kubeadm reset
[reset] WARNING: Changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted.
[reset] Are you sure you want to proceed? [y/N]: y
[preflight] Running pre-flight checks
W0317 00:53:40.441808    4512 removeetcdmember.go:79] [reset] No kubeadm config, using etcd pod spec to get data directory
[reset] No etcd config found. Assuming external etcd
[reset] Please, manually reset etcd to prevent further issues
[reset] Stopping the kubelet service
[reset] Unmounting mounted directories in "/var/lib/kubelet"
[reset] Deleting contents of config directories: [/etc/kubernetes/manifests /etc/kubernetes/pki] [reset] Deleting files: [/etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf] [reset] Deleting contents of stateful directories: [/var/lib/kubelet /var/lib/dockershim /var/run/kubernetes /var/lib/cni]

The reset process does not clean CNI configuration. To do so, you must remove /etc/cni/net.d

The reset process does not reset or clean up iptables rules or IPVS tables.
If you wish to reset iptables, you must do so manually by using the "iptables" command.

If your cluster was setup to utilize IPVS, run ipvsadm --clear (or similar)
to reset your system's IPVS tables.

The reset process does not clean your kubeconfig files and you must remove them manually.
Please, check the contents of the $HOME/.kube/config file.

Agregamos el nodo:

root@KUBERNETES01:~# kubeadm join 192.168.2.193:6443 --token w3zozn.ta0i47219yz2s14s --discovery-token-ca-cert-hash sha256:44706d8ad99b18b8a18e78260b4c42a916271fcc152a30cc3201d2b3b212ed78
W0317 00:53:56.230861    4616 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set.
[preflight] Running pre-flight checks
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.17" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

Volvemos a comprobar que ya está el nodo en Ready y en la versión actualizada:

raulunzue@KBMASTER:~$ kubectl get node
NAME           STATUS   ROLES    AGE    VERSION
kbmaster       Ready    master   69d    v1.17.4
kubernetes01   Ready      7m7s   v1.17.4
kubernetes02   Ready      69d    v1.17.4

Si escalo un pod, ya se ejecuta en ambos nodos:

raulunzue@KBMASTER:~$ kubectl scale --replicas=6 deployment hello-world-deployment-elblogdenegu
deployment.apps/hello-world-deployment-elblogdenegu scaled

Comprobamos:

raulunzue@KBMASTER:~$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hello-world-deployment-elblogdenegu-6dbbf956cf-2rmxv 1/1 Running 0 27s 10.69.1.3 kubernetes01
hello-world-deployment-elblogdenegu-6dbbf956cf-7h6sm 1/1 Running 0 27s 10.69.1.2 kubernetes01
hello-world-deployment-elblogdenegu-6dbbf956cf-hs78p 1/1 Running 0 27s 10.69.1.4 kubernetes01
hello-world-deployment-elblogdenegu-6dbbf956cf-hxds8 1/1 Running 5 45d 10.69.2.29 kubernetes02
hello-world-deployment-elblogdenegu-6dbbf956cf-j4fs6 1/1 Running 0 27s 10.69.2.32 kubernetes02
hello-world-deployment-elblogdenegu-6dbbf956cf-rg882 1/1 Running 1 59m 10.69.2.30 kubernetes02

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

La entrada Kubernetes agregar nodo a cluster existente se publicó primero en Blog VMware y Citrix.

Viewing all 681 articles
Browse latest View live