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