Kubernetes
集群架构
- master: 主节点,控制平台,不需要很高性能,通常一个就行,也可以开多个主节点来提高集群可用度。
- worker: 工作节点,可以是虚拟机或物理计算机,任务在这里跑,机器性能需要好点;通常有很多个,可以不断加机器扩大集群;每个工作节点由主节点管理。
- Pod: 可英,K8S 调度、管理的最小单位,一个 Pod 可以包含一个或多个容器,每个 Pod 有自己的虚拟 IP。一个工作节点可以有多个 pod,主节点会考量负载自动调度 pod 到哪个节点运行。
组件
kube-apiserver
API 服务器,公开了 Kubernetes APIetcd
键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库kube-scheduler
调度 Pod 到哪个节点运行kube-controller manager
集群控制器cloud-controller manager
与云服务商交互
指令 Commands
安装
brew install kubectl
kubectl version --client
brew install minikube
# 如果安装错误
brew unlink minikube
brew link minikube
启动
# 启动
minikube start
# 停止
minikube stop
# 清空集群
minikube delete --all
# 安装集群可视化 Web UI 控制台
minikube dashboard
# 获取节点信息
kubectl get node
kubectl get pod
# 显示更多信息
kubectl get node -o wide
kubectl get pod -o wide
kubectl describe node
kubectl describe pod
kubectl logs
kubectl logs [podName]
kubectl logs [podName] -f # 持续不断的读取 log
部署
通过命令行创建 pod
# 使用 image 部署应用 pod
kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1
通过 .yaml
文件创建 pod
kubectl apply -f ./pod.yaml
pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
# 定义容器,可以多个
containers:
- name: test-k8s # 容器名字
image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像
通过 Deployment 文件为多个应用部署
apiVersion: apps/v1
kind: Deployment
metadata:
# 部署名字
name: test-k8s
spec:
replicas: 2
# 用来查找关联的 Pod,所有标签都匹配才行
selector:
matchLabels:
app: test-k8s
# 定义 Pod 相关数据
template:
metadata:
labels:
app: test-k8s
spec:
# 定义容器,可以多个
containers:
- name: test-k8s # 容器名字
image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像
操作
# 进入容器
kubectl exec -it [podName] -c [containerName] -- bash
# 推出容器
exit
kubectl scale deployment test-k8s --replicas=10
通过 端口映射 访问 pod 中容器
# Access pod at localhost:8080
kubectl port-forward [test-k8s-xxxxx-xxx] 8080:8080
kubectl logs pod/test-k8s-xxxxx-xxx -f
资源
- PDF 1 - Kubernetes tools ecosystem
- minikube docs: https://minikube.sigs.k8s.io/docs/
- Kubernetes docs: https://kubernetes.io/docs/home/
- Kubernetes (K8S) 3 小时快速上手 + 实践,无废话纯干货: https://www.bilibili.com/video/BV1Tg411P7EB
- 完整版 Kubernetes(K8S)全套入门+微服务实战项目,带你一站式深入掌握 K8S 核心能力: https://www.bilibili.com/video/BV1MT411x7GH