docker run -t
kubectl apply -f <file name or directory> kubectl apply -f pod.yaml
kubectl get pods
kubectl get all
kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT kubectl port-forward pod/auth-service 8080:80
kubectl rollout status deployment auth-service-deployment
kubectl rollout restart deployment <deployment_name> -n <namespace>
kubectl rollout undo deployment auth-service-deployment –record
kubectl rollout undo deployment auth-service-deployment –to-revision=1 –record
ps -ef|grep port-forward
kill -9 <process number>
kubectl exec -it POD_NAME – sh
kubectl delete ns NAME_SPACE
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
kubectl proxy
kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kube-system-default
labels:
k8s-app: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
apiVersion: v1
kind: Secret
metadata:
name: default
namespace: kube-system
labels:
k8s-app: kube-system
annotations:
kubernetes.io/service-account.name: default
type: kubernetes.io/service-account-token
EOF
打印token
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-desktop –token="${TOKEN}"
echo $TOKEN
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.1/deploy/static/provider/cloud/deploy.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
ingressClassName: nginx
defaultBackend: <!-- 在沒有規定其他port號下,預設會導向odin-service的8000port -->
service:
name: odin-service
port:
number: 8000
apiVersion: v1
kind: Service
metadata:
name: odin-service
spec:
selector:
type: demo
type: NodePort
ports:
- protocol: TCP
port: 8000
targetPort: 80
nodePort: 30390
Deployment "auth-service-deployment" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"type":"demo1"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
當更改selector,需要刪除服務在新建
// deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: chat-service-deployment
labels:
type: chat-demo
spec:
replicas: 1
selector:
matchLabels:
type: chat-demo
template:
metadata:
labels:
type: chat-demo
spec:
restartPolicy: Always //default
containers:
- name: chat-service
image: odinveve/chat-service
ports:
- containerPort: 8080
k8s目前簡單的種類有兩種,重建部署策略(Recreate)、滾動部署(Ramped aka. Rolling-update)
// app-v1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth-service-deployment
labels:
app: auth-service
spec:
replicas: 3
strategy:
type: RollingUpdate //default
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: auth-service
template:
metadata:
labels:
app: auth-service
version: v1
spec:
containers:
- name: auth-service
image: odinveve/auth-service
ports:
- containerPort: 8080
kubectl delete all –all –namespace default
minikube dashboard
minikube tunnel
minikube service <service_name> -n <sn>