среда, 19 июня 2019 г.

bashrc generator

Нашел отличный сервис для кастомизации SSH сессии, разноцветные буковки и т.д

http://bashrcgenerator.com/


Пример моей сессии: mario@mycomputer:[/usr/local/src]:




export PS1="\[\e[33m\]\u\[\e[m\]@\[\e[31m\]\h\[\e[m\][\[\e[36m\]\w\[\e[m\]]:/ "

alias grep='grep -n --color'

вторник, 18 июня 2019 г.

helm install - namespaces "kube-system" is forbidden: User "system:serviceaccount:kube-system:default" cannot get resource "namespaces" in API group "" in the namespace "kube-system"

Не устанавливался Certificate Manager в helm после гугления нашел решение



kubectl --namespace kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller-cluster-rule \
 --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

kubectl --namespace kube-system patch deploy tiller-deploy \
 -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}' 

понедельник, 17 июня 2019 г.

kubernetes dashboard permission denied

После деплоя дашборда и входа в панель Kubernetes происходят ошибки:


warning
configmaps is forbidden: User "system:serviceaccount:kube-system:kubernetes-dashboard" cannot list configmaps in the namespace "default" 
close 
warning
persistentvolumeclaims is forbidden: User "system:serviceaccount:kube-system:kubernetes-dashboard" cannot list persistentvolumeclaims in the namespace "default" 
close 
warning
secrets is forbidden: User "system:serviceaccount:kube-system:kubernetes-dashboard" cannot list secrets in the namespace "default" 

Решается созданием нужной роли:


kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard

Для дашборда версии выше 2.0.0
kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard

воскресенье, 16 июня 2019 г.

kubeadm join - failed with error: Get http://localhost:10248/healthz: dial tcp [::1]:10248: connect: connection refused.

Была ошибка при добавлении ноды в кластер kubernetes командой kubeadm join

Проблема решилась обновлением и перезапуском kubelet.

service kubelet status
service kubelet restart

больше информации тут: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/


суббота, 15 июня 2019 г.

kubernetes dashboard перевод на https с помощью nodePort


1) Деплоим recommended версию по инструкции, затем.

 https://github.com/kubernetes/dashboard/wiki/Installation

kubernetes metrics-server - Unable to fully scrape metrics from source kubelet_summary

была ошибка Unable to fully scrape metrics from source kubelet_summary
при выполнении команды kubectl top nodes

Проблема решилась добавлением в deployments metrics-server


   - --kubelet-insecure-tls
   - --kubelet-preferred-address-types=InternalIP



      containers:
      - name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.3
        command:
        - /metrics-server
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
        imagePullPolicy: Always
        volumeMounts:
        - name: tmp-dir

          mountPath: /tmp

четверг, 13 июня 2019 г.

kubelet port 10250 - heapster Failed to get all responses in time (got 0/1)

Деплой heapster и решение проблем с доступом к метрикам в kubernetes 1.14.3.

1) git clone https://github.com/kubernetes-incubator/metrics-server
2) kubectl create -f deploy/1.8+/
3) git clone https://github.com/kubernetes/heapster.git 2) cd heapster
3) kubectl create clusterrole system:heapster --verb=create,get,list,watch --resource=nodes,pods,namespaces,deployments.extensions,nodes/stats
4) добавляем в /heapster/deploy/kube-config/influxdb/heapster.yaml источник для метрик ниже
5) kubectl create -f deploy/kube-config/influxdb/
6) kubectl apply -f /heapster/deploy/kube-config/rbac/heapster-rbac.yaml


    spec:

      serviceAccountName: heapster

      containers:
      - name: heapster
        image: k8s.gcr.io/heapster-amd64:v1.5.4
        imagePullPolicy: IfNotPresent
        command:
        - /heapster
        - --source=kubernetes:https://kubernetes.default:443?useServiceAccount=true&kubeletHttps=true&kubeletPort=10250&insecure=true
        - --sink=influxdb:http://monitoring-influxdb.kube-system.svc:8086





понедельник, 10 июня 2019 г.

Nginx ingress - address EMPTY fix

Решение проблемы с пустым IP- адресом при написании команды kubectl get ing


1) Клонируем репу https://github.com/nginxinc/kubernetes-ingress

2) Деплоим ingress как в инструкции: https://github.com/nginxinc/kubernetes-ingress/blob/master/docs/installation.md

2) Переходим в папку /kubernetes-ingress/deployments/common

3) правим файл ConfigMap'a nginx-config.yaml

4) cat nginx-config.yaml 

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
  namespace: nginx-ingress
data:
  proxy-connect-timeout: "10s"
  proxy-read-timeout: "10s"
  client-max-body-size: "2m"
  external-status-address: "XX.XX.XXX.XX"

5) а также добавляем IP своего хоста в yaml файликах от типа развернутого пода(LoadBalancer или NodePort) kubernetes-ingress/deployments/service


apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress
  namespace: nginx-ingress
spec:
  type: NodePort 
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
    name: http
  - port: 443
    targetPort: 443
    protocol: TCP
    name: https
  externalIPs:
  - XXX.XX.XX.XX
  selector:
    app: nginx-ingress

5) kubectl apply -f nginx-config.yaml

6)  разворачиваем тестовый под и ингресс например nginx, затем проверяем IP командой нашего ingress: kubectl get ing