K8s环境搭建及项目部署
Mac使用MiniKube搭建K8s环境
-
首先配置好docker环境
-
安装kubectl
1
brew install kubectl
-
在官网下载virtualbox,配置为默认驱动
1
minikube config set driver virtualbox
-
或者可以使用docker为默认驱动
1
minikube config set driver docker
-
1 2
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 sudo install minikube-darwin-amd64 /usr/local/bin/minikube
-
启动minikube
1
minikube start --image-mirror-country=cn --registry-mirror=https://ug267z0y.mirror.aliyuncs.com
--image-mirror-country=cn
自动使用阿里云服务来支持minikube的环境配置常用配置参数如下
--driver=***
从1.5.0版本开始,Minikube缺省使用系统优选的驱动来创建Kubernetes本地环境,比如您已经安装过Docker环境,minikube 将使用docker
驱动--cpus=2
: 为minikube虚拟机分配CPU核数--memory=2048mb
: 为minikube虚拟机分配内存数--registry-mirror=***
为了提升拉取Docker Hub镜像的稳定性,可以为 Docker daemon 配置镜像加速,参考阿里云镜像服务--kubernetes-version=***
: minikube 虚拟机将使用的 kubernetes 版本
-
验证是否成功
1
kubectl get po -A
-
打开Kubernetes控制台
1
minikube dashboard
自动会跳转到网页控制台
Kubectl指令
-
查看集群配置
kubectl config view
-
与deployment相关
编写deployment.yaml文件,创建
1
kubectl create -f deployment.yaml
查看所有的deployment
kubectl get deployments
删除指定的pod
kubectl delete deployments <deploymentName>
-
应用升级
1
kubectl set image deloyment web nginx=nginx:1.15
查看是否成功
1
kubectl rollout status deloyment web
查看历史版本
1
kubectl rollout history deloyment web
回滚到上一个版本
1
kubectl rollout undo deloyment web
后面加上 –to-version = 2 回滚到指定版本
弹性伸缩
1
kubectl scale deloyment web --repicas = 10
-
与pod相关
查看所有的pod
kubectl get pods
删除指定的pod
kubectl delete pod <podName>
-
与service相关
查看services
kubectl get services
或者kubectl get svc
可以知道映射到端口号删除指定的service
kubectl delete service <serviceName>
Minikube基本指令
- 停止一个集群
minikube stop
- 删除一个集群
minikube delete
, 删除所有集群minikube delete --all
- 查看ip地址:
minikube ip
通过kubectl发布服务
-
创建服务
hello-minikubel
1
kubectl create deployment hello-minikube1 --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10
-
暴露端口
1
kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8080
-
访问端口
1
minikube service hello-minikube1
-
查看所有的deployment服务
kubectl get deployments
查看pods
kubectl get pods
查看services
kubectl get services
或者kubectl get svc
可以知道映射到端口号查看创建的 Pod 和 Service
kubectl get pod,svc -n kube-system
-
删除服务
1
kubectl delete deployment -n default hello-minikube1 --force --grace-period=0
部署Nginx服务
|
|
通过minikube部署go语言项目
制作程序镜像
-
编写dockefile文件
-
根据dockerfile文件build镜像
-
验证进行,将其运行起来成容器
-
推送镜像到DockerHub
登录DockerHub 使用账号和密码登录即可
docker login
1 2 3
//用Dockerfile重新构建镜像,指定镜像仓库名。构建完成后将镜像然后推送到DockerHub上 docker build -t robking/minukube-go . docker push robking/minikube-go
Kubernets部署应用
-
定义预期状态,编写deployment.yaml文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
apiVersion: apps/v1 kind: Deployment metadata: name: my-go-app spec: replicas: 1 selector: matchLabels: app: go-app template: metadata: labels: app: go-app spec: containers: - name: go-app-container image: rob1king1/minikube-go resources: limits: memory: "128Mi" cpu: "500m" ports: - containerPort: 3000
Kubernetes Deployment
对象(清单文件的kind
里指定的)表示运行在集群中的应用。文件里还指定了应用需要一个副本运行(replicas
),以及运行的容器名和容器的镜像、资源大小等信息指令生成
1
kubectl create deployment web --image=nginx -o yaml --dry-run > nginx.yaml
-
使用
deployment.yaml
创建Deployment
对象来运行Go
应用程序的容器1
kubuctl apply -f delpyment.yaml
1
kubectl create -f deployment.yaml
-
可以查看pods和services的状态,event的信息
-
暴露应用,可以输出到文件中yaml,然后apply即可
1
kubectl expose deployment my-go-app --type=NodePort --name=go-app-svc --target-port=3000
-
查看应用的端口和ip地址
1 2 3 4
//查看ip minikube ip //查看端口 kubectl get svc
-
列出hello-nginx的信息 自动打开浏览器
1
minkube service go-app-svc