logo kubernetes

Kubernetes, dołączanie nowego hosta i zarzadzanie tokenami

Standardowo token potrzebny do dołączenia do klastra ważny jest 24 godziny. Poza tym, notatki giną. 😉

Komenda pozwalająca na dołączenia hosta do klastra

# kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>

Wylistowanie aktywnych tokenów

kubeadm token list

Pusto? Znaczy się, nie masz żadnego aktywnego tokena.

Wygeneruj nowy token

kubeadm token create

Odzyskaj ‚discovery token ca cert’

Poza tokenem, do komendy kubeadm join potrzeba też hasha certyfikatu. Żeby go ‚odzyskać’, wykonaj:

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

Stała zmiana schedulera IO

Hypervisory takie jak hyper-v, czy vmware optymalizują dostęp do dysku. Standardowy scheduler linuxa też. Może to obniżać ogólną wydajność.

W sieci można znaleźć poradę, że problem optymalizowania dostępu do danych należy rozwiazać np. przez dodanie parametru do /etc/grub.conf. Oczywiście niewiele to pomaga, bo np. CentOs 7 takiego pliku w ogóle nie ma. Jest jednak w miarę uniwersalne rozwiązanie dla linuxów korzystających z gruba i UEFI:

grubby --update-kernel=ALL --args="elevator=noop"

Niestety zmiana jest widoczna tylko w obecnie skonfigurowanych kernelach. Żeby była bardziej przyszłościowa, należy w pliku „/etc/default/grub” do linii GRUB_CMDLINE_LINUX= dopisać elevator=noop.

SELinux dla opornych

Czyli jak rozwiązać problem z serii ‚coś nie działa’. 🙂

W środowiskach chronionych SELinuxem, często dochodzi się do sytuacji w której jest ok, ale ‚coś nie działa’. Dostajemy jakieś permission denied, czy inny nic nam nie mówiący komunikat. Gdzie szukać podpowiedzi?

Na Fedorze trzeba podejrzeć

/var/log/audit/audit.log

Jeżeli widzimy tam linie ze słówkiem ‚deny’, to jest duże prawdopodobieństwo, że znaleźliśmy winowajcę. Co dalej?

Przepuszczamy nasz plik loga przez skrypt tłumaczący co zrobić.

sealert -a audit.log > wynik.txt

W pliku wynik będziemy mieli łopatologicznie wytłumaczone co zrobić, żeby dane deny znikło. Czasami podpowiedzi może być kilka. Trzeba wybrać czy np. przełaczamy jakąś flagę globalnie, a może lepiej poprawić kontekst jednego pliku. Tutaj wybór należy już do nas.

Na koniec najważniejsze… SELinux jest skuteczny. Eliminuje sporo zagrożeń. Wyłączanie go to bardzo, ale to bardzo durny pomysł.

[Fedora] System76, Oryx Pro

Firma system76 jest jednym z niewielu „producentów” sprzętu, dla których Linux jest pierwszym i jedynym wspieranym systemem operacyjnym. Niestety wymyślili sobie, że będą wspierać Ubuntu i opartego o niego POP!a (własnej produkcji).
Osobiście wolę wynalazki RHEL’o podobne, także na laptopie/desktopie pracuję na Fedorze. Jak można się domyślać, na moim laptopie niektóre funkcjonalności nie działają out of box.
Żeby rozwiązać problem zarządzania wentylatorami, kolorkami klawiatury itp. przygotowałem repozytorium z paczkami dla Fedory dostępne na moim koprze: https://copr.fedorainfracloud.org/coprs/szydell/system76/

Dodanie repozytorium do Fedory:

sudo dnf install dnf-plugins-core
sudo dnf copr enable szydell/system76 

Instalacja i start:

sudo dnf install system76-dkms system76-power system76-firmware
sudo systemctl enable system76-power system76-power-wake system76-firmware-daemon
sudo systemctl start system76-power system76-firmware-daemon

Do pełni szczęścia brakuje jeszcze paczki system76-driver. Zaktualizuję posta jak będzie dostępny.

Go / Golang – instalacja na Centos 7

Red Hat Enterprise Edition, a co za tym idzie również Centos są znane z dość konserwatywnego podejścia do wersji dostępnych pakietów.
Kiedy piszę tę notatkę, w oficjalnym repozytorium CentOS dostępny Go dostępne jest w wersji 1.8.3, natomiast najnowszy stabilny release Go to wersja 1.10.
Oczywiście instalacja ze źródeł, czy też z tar.gz z binarkami to żaden problem, ale nie po to wymyślono pakiety, żeby wszystko robić na około. Są na szczęście ‚dobrzy ludzie’, którzy pomyśleli o zrobieniu repozytorium z aktualnymi paczkami, można je znaleźć pod adresem: https://go-repo.io/

Ściągawka do instalacji repo:

(root)

rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
yum install golang

Ściągawka do konfiguracji środowiska:
(user do kodowania)

mkdir -p ~/go/{bin,pkg,src}
echo 'export GOPATH="$HOME/go"' >> ~/.bashrc
echo 'export PATH="$PATH:${GOPATH//://bin:}/bin"' >> ~/.bashrc