Référencer le site Hexo sur google

Pourquoi

Le plugin de recherche que j-utilsie sur ce site Hexo est un simple lien vers la recherche gogle. Si le site n’est pas référencé sur google, il n’y a donc pas de réusltat de recherche.

Déclarrer un site sur google

A moins d’avoir des liens sur d’autres sites web, il va falloir indiquer à google que notre site existe. Pour cela, il faut se connecter à Google search console

Pour améliorer l’indéxation, il eest intéressant de créer un fichier “sitemap.xml” et de le délarrer dans la “google search console”

Créer le fichier sitemap.xml

C’est un fichier xml: on pourrait le créer à la main … mais il y a un module hexo qui fait ca trés bien:

1
npm install hexo-generator-sitemap --save
  • Déclarer le chemin du sitemmap dans ‘_config.xml’
1
2
3
# Sitemap
sitemap:
path: sitemap.xml

Gestion de la SWAP

Lister le taux d’occupation de la RAM

via free

1
2
3
4
[user@host ~]# free -h
total utilisé libre partagé tamp/cache disponible
Mem: 13Gi 3,4Gi 6,3Gi 325Mi 4,0Gi 9,7Gi
Partition d échange: 18Gi 0B 18Gi

via meminfo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
[user@host ~]#  cat /proc/meminfo 
MemTotal: 14322284 kB
MemFree: 6498636 kB
MemAvailable: 10076892 kB
Buffers: 328440 kB
Cached: 3594824 kB
SwapCached: 0 kB
Active: 4675244 kB
Inactive: 2397004 kB
Active(anon): 3130068 kB
Inactive(anon): 246744 kB
Active(file): 1545176 kB
Inactive(file): 2150260 kB
Unevictable: 176 kB
Mlocked: 176 kB
SwapTotal: 19660796 kB
SwapFree: 19660796 kB
Dirty: 492 kB
Writeback: 0 kB
AnonPages: 3149196 kB
Mapped: 1457988 kB
Shmem: 323360 kB
KReclaimable: 218900 kB
Slab: 410540 kB
SReclaimable: 218900 kB
SUnreclaim: 191640 kB
KernelStack: 23344 kB
PageTables: 56236 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 26821936 kB
Committed_AS: 14023472 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 45208 kB
VmallocChunk: 0 kB
Percpu: 36224 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 550428 kB
DirectMap2M: 8816640 kB
DirectMap1G: 6291456 kB

via vmstat

1
2
3
4
[user@host ~]# vmstat 
procs ----------mémoire---------- -échange- -----io---- -système- ------cpu-----
r b swpd libre tampon cache si so bi bo in cs us sy id wa st
1 0 0 4958276 340516 4574028 0 0 284 95 708 1754 8 2 90 0 0

Voir la RAM par process

1
[user@host ~]# ps -o pid,user,%mem,command ax | sort -b -k3

Voir le détail de la consommation RAM d’un processus

1
[user@host ~]# pmap 3445

Attention, ici on a le détail de la VSZ

swappiness

La swappiness est la quantité d’espace RAM disponible avant que Linux ne se décide à utiliser la SWAP.

Vérifier

1
2
3
4
[user@host ~]# cat /proc/sys/vm/swappiness 
10
[user@host ~]# sysctl vm.swappiness
vm.swappiness = 10

Modifier

  • de façons dynamique
1
[user@host ~]# sysctl vm.swappiness=10
  • de façons persisstante

Il faut modifier le fichier /etc/sysctl.conf pour y rajouter la ligne suivante:

1
vm.swappiness=10

La modification sera prise en compte au prochain reboot.

Treeview

Simple TreeView

  • Informatique
    • Developpement
    • Windows
    • Linux
      • Network
      • Other
      • Packages
        • RPM/YUM/DNF
        • APT
        • AUR
dépendance:
  • font-awesome (pour les icones)
Reference: https://www.w3schools.com/howto/howto_js_treeview.asp

highcharts

Génération de graph avec highchats.js

dépendance:
  • jquery >= 2
  • highcharts_.js
  • highcharts.exporting.js
  • Reference:

iscsi

apt install open-iscsi
vim /etc/iscsi/iscsid.conf
node.startup = automatic pour activer iscsi au démarrage.
node.session.auth.username = login
node.session.auth.password = password
discovery.sendtargets.auth.username = login
discovery.sendtargets.auth.password = password

pi@p-pi3b-0002:~ $ sudo iscsiadm –mode discovery –type sendtargets –portal 192.168.1.1
10.0.5.1:3260,1 iqn.2004-04.com.qnap:ts-453a:iscsi.sophie.003191
10.0.3.1:3260,1 iqn.2004-04.com.qnap:ts-453a:iscsi.sophie.003191
192.168.1.1:3260,1 iqn.2004-04.com.qnap:ts-453a:iscsi.sophie.003191
10.0.5.1:3260,1 iqn.2004-04.com.qnap:ts-453a:iscsi.anthony.003191
10.0.3.1:3260,1 iqn.2004-04.com.qnap:ts-453a:iscsi.anthony.003191
192.168.1.1:3260,1 iqn.2004-04.com.qnap:ts-453a:iscsi.anthony.003191
192.168.1.1:3260,1 iqn.2004-04.com.qnap:ts-453a:iscsi.kubernetes.003191
10.0.5.1:3260,1 iqn.2004-04.com.qnap:ts-453a:iscsi.kubernetes.003191
10.0.3.1:3260,1 iqn.2004-04.com.qnap:ts-453a:iscsi.kubernetes.003191

pi@p-pi3b-0002:~ $ sudo iscsiadm –mode node –targetname iqn.2004-04.com.qnap:ts-453a:iscsi.kubernetes.003191 –portal 192.168.1.1:3260 –login

kubernetes

install flannel

1
2
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sysctl net.bridge.bridge-nf-call-iptables=1 (sur tous les noeuds)

exemple de création de pods avec port exposé

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
selector:
matchLabels:
run: load-balancer-example
replicas: 2
template:
metadata:
labels:
run: load-balancer-example
spec:
containers:
- name: hello-world
image: gcr.io/google-samples/node-hello:1.0
ports:
- containerPort: 8080
protocol: TCP
1
kubectl expose deployment hello-world --type=NodePort --name=example-service

kubernetes UI

Accéder à l’UI via un tunnel SSH

  • Installation:

    1
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta1/aio/deploy/recommended.yaml
  • Lancer l’UI:

    1
    kubectl proxy
  • Créer le tunnel:
    ssh -L 9999:127.0.0.1:8001 -N -f -l pi 192.168.1.101

  • Connection http:
    http://127.0.0.1:9999/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login

  • Récupérer le token:

    1
    kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

    Autoriser l’éxécution de pods sur le noeud master

    1
    kubectl taint nodes --all node-role.kubernetes.io/master-

    Metallb

    1
    kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml

    metallb-config.yaml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    apiVersion: v1
    kind: ConfigMap
    metadata:
    namespace: metallb-system
    name: config
    data:
    config: |
    address-pools:
    - name: default
    protocol: layer2
    addresses:
    - 192.168.1.170-192.168.1.190
  • Aprés avoir changé la plage d’IP il faut supprimer les podfs metallb: kubectl delete po -n metallb-system --all

Ingress Nginx

1
2
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
$ kubectl get pods -n ingress-nginx

GlusterFS

https://www.supinfo.com/articles/single/4441-kubernetes-stockage-demande-avec-heketi

wget https://github.com/heketi/heketi/releases/download/v4.0.0/heketi-v4.0.0.linux.arm.tar.gz

tar zxvf heketi-v4.0.0.linux.arm.tar.gz

pi@p-pi3b-0001:~/heketi $ ./heketi-cli -v
heketi-cli v4.0.0

sudo mkdir -p /etc/glusterfs /var/lib/misc/glusterfsd /var/lib/{heketi,glusterd} /var/log/glusterfs

curl -O https://raw.githubusercontent.com/gluster/gluster-kubernetes/master/deploy/kube-templates/glusterfs-daemonset.yaml

pi@p-pi3b-0001:~ $ kubectl label nodes p-pi3b-000{2,3}.hedwy.fr storageNode=GlusterFS
node/p-pi3b-0002.hedwy.fr labeled
node/p-pi3b-0003.hedwy.fr labeled

attention l’image docker officielle “gluster/gluster-centos” n’est pas compatible armhf

sed -i “20s/storagenode:\ glusterfs/storageNode:\ GlusterFS/g;s/gluster/gluster-centos:latest/angelnu/glusterfs/g” glusterfs-daemonset.yaml

pi@p-pi3b-0001:~ $ kubectl create -f glusterfs-daemonset.yaml
daemonset.extensions/glusterfs created

Liens:

https://github.com/teamserverless/k8s-on-raspbian/blob/master/GUIDE.md

raspbian

copier l’ISO vers une carte SD

1
sudo dd bs=4M if=2019-04-08-raspbian-stretch-lite.img of=/dev/sdb conv=fsync

configurer le wifi

Activer ssh

Par défaut ssh n’est pas actif. Il faut créer un fichier nommé sshdans la partition boot

Ajouter la clef ssh de root