基础概念:
nodes -> k8s 集群实际机器节点,上面运行pods
pods -> 包裹服务应用的container实际运行的地方
deployment -> k8s部署应用的编排抽象,以及后续操作的基础依赖
services -> k8s通过services对外暴露端口
概要:
k8s 需要依赖docker或其他容器话管理工具
k8s 有集群内和集群外的概念,services 的主要作用是将集群内的功能暴露,使集群外可以访问相关服务
操作步骤:
使用docker将服务进行打包封装成镜像文件
# 详细命令参见docker help build
docker build -t ${source-image:tag} -f ${path1/Dockerfile} path
# 命令简单解释
# ${source-image:tag} 自定义的名称和tag,tag可省略
# ${path1/Dockerfile} Dockerfile的具体路径
# path 打包进image的内容所在的实际路径
将镜像push到docker的镜像仓库
# docker 登录
# docker help login
docker login -u ${user} -p ${pwd} ${repository}
# ${user} docker登录用户名
# ${pwd} docker登录密码
# ${repository} docker image 仓库地址
# 依据source-image 创建一个target-image
docker image tag ${source-image} ${target-image}
# ${source-image} 被依赖于创建远程仓库target-image的原始本地image,上一个命令中使用
# dockerfile创建的image
# ${target-image} 新创建的远程仓库image,target-image中包含远程仓库地址等信息
# 将镜像推送到远程仓库
docker push ${target-image}
使用k8s命令创建一个deployment指定名称和对应的镜像,创建成功后会依据deployment生成pods并运行
# k8s通过拉取仓库镜像创建相关的deployment
kubectl create deployment ${project_name} --image=${target-image}
# ${project_name} 创建的deploy_ment名称
# ${target-image} k8s要从远程拉取的镜像名称
使用k8s命令创建一个services暴露当前pods到k8s集群外提供服务
# k8s使用expose命令将实际服务的端口映射到集群外可以访问的端口
kubectl expose deployment/${project_name} --type=${type} --port=${real-server-port}
# ${project_name} 部署的deployment名称
# ${type} 映射类型有ClusterIP<NodePort<LoadBalancer 以及ExternalName 等
# NodePort是ClusterIP的超集,LoadBalancer是NodePort的超集,个人理解使用NodePort Type时,同# 样可以使用ClusterIP type的方式对服务进行访问;同理,使用LoadBalancer Type时,同样可以使用
# NodePort方式进行访问;
# ${real-server-port} 个人理解为服务真实的端口
更新k8s服务
# 更新k8s服务的主要操作为,更新k8s对应的deployment中的image,k8s会自动创建新的pods替换原有服务
kubectl set image deployments/${project_name} ${project_name}=${new-image}
# ${project_name} 创建的deploy_ment名称
# ${new-image} 要用来替换旧服务的新的镜像名称
k8s扩容与回收
# k8s 扩容或回收命令
kubectl scale deployments/${project_name} --replicas=${replicas_num}
# ${project_name} 要进行扩容或回收的deploy_ment名称
# ${replicas_num} 扩容或回收后的副本数量
基础命令:
kubectl get deployment :查看所有deployment
kubectl get pods: 查看所有pods
kubectl exec -ti ${pod-name} -- ${cmd,eg:bash}: 在pods中执行相关命令
kubectl create deployment ${project_name} --image=${target-image}: 创建deployment
kubectl logs ${pod-name}: 查看pods相关log
kubectl describe pods ${pod-name}: 查看pods相关详细信息
kubectl expose deployment/${project_name} --type=${type} --port=${real-server-port}: 将pod中服务端口暴露到k8s集群外命令
kubectl get services: 查看service信息(包括端口映射信息等)
kubectl scale deployments/${project_name} --replicas=${replicas_num}: 对k8s上${project_name}服务进行扩容或回收
kubectl describe deployments/${project_name}: 可以查看deploy的详细信息,包含副本数量,端口等信息
kubectl edit deployment ${deployment_name}: 可以编辑deployment配置信息
kubectl rollout restart deployment ${deployment_name} -n ${namespace}: 重启deployment
相关知识:
使用container创建image
docker commit ${container_id} ${image:tag}