k8s安装
Kubernetes集群分为一个master主节点和worker工作节点。可直接通过官网已经搭建好的测试,不用进行下面的安装。,打开PowerShell执行如下命令。
·
一、K8s概念
- 参考文章 ,参考视频
- 它是一个
为 容器化 应用提供集群部署和管理的开源工具
,由 Google 开发:Kubernetes 可以为你提供集中式的管理集群机器和应用,加机器、版本升级、版本回滚,那都是一个命令就搞定的事,不停机的灰度更新,确保高可用、高性能、高扩展
二、minikube安装
-
可直接通过官网已经搭建好的测试,不用进行下面的安装https://kubernetes.io/docs/tutorials/hello-minikube/
-
1、
先安装docker
,docker安装 -
2、
minikube只是一个 K8S 集群模拟器,只有一个节点的集群,只为测试用,master 和 worker 都在一起
。安装minikube ,打开PowerShell执行如下命令
-
3、然后继续执行
minikube start
, Kubernetes集群分为一个master主节点和worker工作节点# 启动集群 minikube start --image-mirror-country='cn' # 查看节点。kubectl 是一个用来跟 K8S 集群进行交互的命令行工具 kubectl get node # 停止集群 minikube stop # 清空集群 minikube delete --all # 安装集群可视化 Web UI 控制台 minikube dashboard
三、部署应用到集群中
- 1、有两种方式创建pod,
一种是直接通过命令行的形式,一种是通过yaml文件的方式创建
- 2、
通过命令行的形式创建pod
- kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1
- kubectl get pod
- 3、
通过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 # 镜像
- 4、通过yaml文件的方式部署多个pod,
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 # 镜像
- 5、部署一个 nodejs web 应用,源码地址:Github
# 部署应用 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
四、Service
- 1、内部服务访问:service.yaml文件
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
- 2、内部服务的默认类型是
ClusterIP
,只能在集群内部访问,我们可以进入到 Pod 里面访问:kubectl exec -it pod-name -- bash curl http://test-k8s:8080
- 3、如果要在集群外部访问,可以通过端口转发实现(只适合临时测试用):kubectl port-forward service/kubia 8888:80 ;如果你用 minikube,也可以这样minikube service test-k8s
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
- 4、对外暴露服务,上面我们是通过端口转发的方式可以在外面访问到集群里的服务,如果想要直接把集群服务暴露出来,我们可以使用NodePort 和 Loadbalancer 类型的 Service
- 5、外部服务NodePort 的 yaml 文件
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
- 6、外部服务LoadBalancer的 yaml 文件 ,负载均衡器一般由云服务商提供或者自己 裸机搭建,需要一个负载均衡器的支持,因为它需要生成一个新的 IP 对外服务,否则状态就一直是 pendding,这个很少用,更高端的 Ingress 代替它
五、k8s部署爬虫
1、意义
- 1、了解过Docker Compose的应该知道,可以非常方便地启动Docker容器运行爬虫,然而大规模运维是行不通的!!!
- 如何快速部署几十、上百、上千个爬虫程序并协同爬取?
- 如何实现爬虫的批量更新?
- 如何实时查看爬虫的运行状态和日志?
- 2、未完不续
更多推荐
已为社区贡献1条内容
所有评论(0)