sudo snap alias microk8s.kubectl kubectl sudo usermod -aG microk8s $(whoami) sudo microk8s enable dashboard sudo microk8s enable dns sudo microk8s enable registry sudo microk8s enable ingress
microk8s dashboard-proxy
kubectl create namespace test
microk8s kubectl get pod -o wide
microk8s kubectl get deployment nginx-deployment -o yaml
microk8s kubectl get service
microk8s enable community microk8s enable istio
kubectl create namespace demo kubectl label namespace demo istio-injection=enabled
test it
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.16/samples/bookinfo/platform/kube/bookinfo.yaml -n demo
sudo microk8s enable ingress sudo kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
test.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: [service-name] port: number: [service-port]
sudo kubectl apply -f test.yaml kubectl expose deployment/nginx-deployment --type="NodePort" --port 80 --namespace=default
Create ConfigMap with HTML
apiVersion: v1 data: index.html: | <!DOCTYPE html> <html lang="en"> <head> <title>A simple HTML document</title> </head> <body> <p>This is Deployment One!<p> </body> </html> kind: ConfigMap metadata: name: my-config1 namespace: default
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.23.3 ports: - containerPort: 80 volumeMounts: - name: nginx-config mountPath: /usr/share/nginx/html #nginx specific volumes: - name: nginx-config configMap: name: my-config1
Create NGINX with custom conf
apiVersion: v1 kind: ConfigMap metadata: name: nginx-conf data: nginx.conf: | user nginx; worker_processes 1; events { worker_connections 10240; } http { server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } } } --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - name: nginx-conf mountPath: /etc/nginx/nginx.conf subPath: nginx.conf readOnly: true volumes: - name: nginx-conf configMap: name: nginx-conf items: - key: nginx.conf path: nginx.conf --- apiVersion: v1 kind: Service metadata: name: nginx spec: type: NodePort ports: - port: 80 protocol: TCP targetPort: 80 nodePort: 30008 selector: app: nginx
# Allow running Docker inside LXC lxc.aa_profile = unconfined lxc.cap.drop = mac_override sys_time sys_module sys_rawio
Note: this affect security!
/var/lib/docker /var/lib/docker/vfs/dir /var/lib/docker/volumes
docker info
docker pull centos
docker run -d -e VARIABLE=CONTENT -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 222:22 centos --rm remove after --name INSTANCE_NAME -it interactive
docker ps docker ps -a docker images docker stats {container}
docker inspect {container}
docker attach {container} docker stop {container} docker start {container}
-v /home/user:/home/user:ro -u 500:500