为 容器化 应用提供集群部署和管理的开源工具
可直接通过官网已经搭建好的测试,不用进行下面的安装https://kubernetes.io/docs/tutorials/hello-minikube/
1、先安装docker,docker安装
先安装docker
2、minikube只是一个 K8S 集群模拟器,只有一个节点的集群,只为测试用,master 和 worker 都在一起。安装minikube ,打开PowerShell执行如下命令
minikube只是一个 K8S 集群模拟器,只有一个节点的集群,只为测试用,master 和 worker 都在一起
3、然后继续执行minikube start , Kubernetes集群分为一个master主节点和worker工作节点
minikube start
# 启动集群 minikube start --image-mirror-country='cn' # 查看节点。kubectl 是一个用来跟 K8S 集群进行交互的命令行工具 kubectl get node # 停止集群 minikube stop # 清空集群 minikube delete --all # 安装集群可视化 Web UI 控制台 minikube dashboard
一种是直接通过命令行的形式,一种是通过yaml文件的方式创建
通过命令行的形式创建pod
通过yaml文件的方式创建单个pod
kubectl apply -f ./pod1.yaml
apiVersion: v1 kind: Pod metadata: name: test-pod spec: # 定义容器,可以多个 containers: - name: test-k8s # 容器名字 image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像
kubectl apply -f ./app1.yaml
Deployment 通过 label 关联起来 Pods
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 apply -f app.yaml # 查看 deployment kubectl get deployment # 查看 pod kubectl get pod -o wide # 查看 pod 详情 kubectl describe pod pod-name # 查看 log kubectl logs pod-name # 进入 Pod 容器终端, -c container-name 可以指定进入哪个容器。 kubectl exec -it pod-name -- bash # 伸缩扩展副本 kubectl scale deployment test-k8s --replicas=5 # 把集群内端口映射到节点 kubectl port-forward pod-name 8090:8080 # 查看历史 kubectl rollout history deployment test-k8s # 回到上个版本 kubectl rollout undo deployment test-k8s # 回到指定版本 kubectl rollout undo deployment test-k8s --to-revision=2 # 删除部署 kubectl delete deployment test-k8s
apiVersion: v1 kind: Service metadata: name: kubia spec: selector: app: kubia # 默认 ClusterIP 集群内可访问,NodePort 节点可访问,LoadBalancer 负载均衡模式(需要负载均衡器才可用) type: ClusterIP ports: - port: 80 # 本 Service 的端口 targetPort: 8080 # 容器端口 # nodePort: 31000 # 节点端口,范围固定 30000 ~ 32767
ClusterIP
kubectl exec -it pod-name -- bash curl http://test-k8s:8080
kubectl get pods kubectl delete deployment kubia kubectl apply -f ./app1.yaml kubectl get pods kubectl apply -f ./service.yaml kubectl get svc kubectl describe svc kubia kubectl get pod -o wide kubectl exec kubia-76d97b7d8f-ffzmb -- curl -s http://kubia:80 kubectl exec kubia-76d97b7d8f-ffzmb -- curl -s http://10.111.237.97:80 kubectl port-forward service/kubia 8888:80 访问localhost:8888
apiVersion: v1 kind: Service metadata: name: kubia-nodeport spec: selector: app: kubia # 默认 ClusterIP 集群内可访问,NodePort 节点可访问,LoadBalancer 负载均衡模式(需要负载均衡器才可用) type: NodePort ports: - port: 80 # 本 Service 的端口 targetPort: 8080 # 容器端口 nodePort: 30123 # 节点端口,范围固定 30000 ~ 32767