0. 准备工作
安装 k8s
部署 dashboard
kubectl apply -f kubernetes-dashboard.yaml
- 检查 kubernetes-dashboard 应用状态
kubectl get pod -n kubernetes-dashboard
- 将k8s server代理到本地端口:
kubectl proxy
- 配置控制台访问令牌
启动ingress controller
kubectl apply -f ingress-nginx-controller.yaml
验证 Kubernetes 集群状态
kubectl cluster-info
kubectl get nodes
kubectl get nodes --show-labels
- 给节点打标签:
kubectl label node docker-desktop disktype=ssd
1. 核心概念
1.1 Kubernetes 基本架构
1.2 k8s中的资源
- namespaces
- Pods
- ReplicaSet
- Deployment
- Service
- Ingress
- configmap
- secrets
- serviceaccounts
- DaemonSet
1.3 核心概念
Label
Pod
Pod 是 Kubernetes 调度的最小单元
一个 Pod 可以包含一个或多个容器,因此它可以被看作是内部容器的逻辑宿主机。Pod 的设计理念是为了支持多个容器在一个 Pod 中共享网络和文件系统
- PID 命名空间:Pod中不同的应用程序可以看到其他应用程序的进程ID
- network 命名空间:Pod 中多个容器处于同一个网络命名空间,因此能够访问的 IP 和端口范围都是相同的。也可以通过 localhost 相互访问
- IPC 命名空间:Pod 中的多个容器共享 Inner-process Communication 命名空间,因此可以通过 SystemV IPC 或 POSIX 进行进程间通信
- UTS 命名空间:Pod 中的多个容器共享同一个主机名
- Volumes:Pod 中各个容器可以共享在 Pod 中定义分存储卷(Volume)
restartPolicy 字段
- Always:只要退出就重启
- OnFailure:失败退出时(exit code不为0)才重启
- Never:永远不重启
Pod、Container 与 Node 之间的关系
2. K8S 操作
创建一个pod
kubectl run myspittr --image spittr:1.0-SNAPSHOT
kubectl get pods
kubectl logs -f myspittr
pod中执行一个命令
kubectl exec myspittr -- ls /run/secrets/kubernetes.io/serviceaccount
kubectl delete pod myspittr
如何将pod或service的端口快速映射到本机端口(调试用)
kubectl port-forward pod/myspittr 8081:8080
kubectl port-forward service/demo 8081:80
创建服务
kubectl expose pod myspittr --port 8080
kubectl get svc
kubectl delete service myspittr
创建 ingress
kubectl create ingress myspittr --class=nginx --rule=www.demo.com/*=myspittr:8080
kubectl delete ingress myspittr
如何使用命令行快捷创建deployment、service、ingress
kubectl create deployment myspittr --image=spittr:1.0-SNAPSHOT --port=8080
kubectl expose deployment myspittr
- 把上面的这个pod的8080端口暴露为myspittr服务
kubectl create ingress myspittr --class=nginx --rule=www.demo.com/*=myspittr:8080
删除:
kubectl delete ingress myspittr
kubectl delete service myspittr
kubectl delete deployment myspittr
3. 部署
使用yaml文件部署
kubectl create -f k8s-deploy.yaml
kubectl delete -f k8s-deploy.yaml
Deployment
- 更新镜像重部署
kubectl set image deployment/spittr spittr=spittr:1.0
- 扩容
kubectl scale deployment spittr --replicas 2
- 自动
kubectl autoscale deployment spittr --min=10 --max=15 --cpu-percent=80
- 查看历史版本
kubectl rollout history deployment/spittr
- 回滚到前一个版本
kubectl rollout undo deployment/spittr