Mac本地学习K8s
文章目录
本文来自于要将国内的一个项目迁移到海外,剥离国内公司域内的各种依赖,海外环境提供k8s部署环境,因此需要学习k8s。 本地学习k8s最好方式就是在本地搭建一个minikube集群,mimikube提供了全套的kubectl命令支持,功能十分强大,此文章记录其中比较重要的命令,以备查询
文章资料来源于官网https://minikube.sigs.k8s.io/docs/start/
minikube基础指令
- 启动一个本地集群
|
|
- 启动dashboard
|
|
- 停止集群
|
|
- 删除集群
|
|
- 删除所有集群
|
|
缓存镜像
minikube不使用宿主机已有镜像
|
|
更多方案见https://minikube.sigs.k8s.io/docs/handbook/pushing/
发布服务
- 使用minikube
在minikube上面发布成服务,type为LoadBalancer
时,external-ip
会显示为<pending>, 此时可以使用指令
|
|
- 或者使用kubectl
|
|
- 使用tunnel
另起一个终端,执行指令minikube tunnel
,然后在查看服务详情,kubectl get services
可以看到服务的EXTERNAL-IP
,此时可以通过服务的EXTERNAL-IP
:service-port
进行访问
停止该终端后,服务EXTERNAL-IP
会变为<pending>
|
|
配置
设置minikube使用内存大小
|
|
插件
- 显示插件列表
|
|
- 启用插件
|
|
- 禁用插件
|
|
kubectl常用命令
针对所有资源类型,都可以使用kubectl create/get/delete/describe/edit {{source_type}}
进行访问
资源类型有namespace
,node
,pod
,replicaset
,deployment
,service
,configmap
也可以使用命令kubectl get all
获取所有资源
可选的OPTIONS
,一般选择-o wide
展示更多信息
例如:
kubectl get node
获取集群节点信息, -A
获取全部节点信息
|
|
我个人一般操作的资源有deployment
,service
,configmap
部署一个应用服务时,会提前写好三个配置文件,分别是configmap.yaml
,deployment.yaml
,service.yaml
文件,然后使用命令
kubectl apply -f {{xx.yaml}}
创建资源,如果资源存在,则会执行更新
更新了deployment
后,可以使用一下命令观察pod
的变化
kubectl get pod {{deployment_name}} --watch
进入到pod
容器中,观察容器内容
kubectl exec -it {{pod_name}} [ -c {{container_name}}] --bash
其中pod_name
是期望进入的pod
, container_name
是pod
中容器名,如果不指定,则默认进入第一个容器中。
扩缩容
kubectl scale deployment {{deployment name}} --replica=N
configmap
更新configmap
与操作pod
,deployment
等一致
使用kubectl get configmap
获取configmap
资源列表
使用kubectl describe configmap {{configmap name}}
查看资源的配置信息
使用kubectl edit configmap {{configmap name}}
修改资源的配置信息
- 重启
deployment
方法1:
kubectl scale deployment {{deployment name}} --replicas=0
kubectl scale deployment {{deployment name}} --replicas=N
方法2:
kubectl delete pod {{podname}} -n {namespace}
方法3:
kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -
方法4(推荐):
kubectl rollout restart deployment/pod {your_deployment_name}
k8s集群搭建
集群搭建好了,默认只在master
节点上可以访问到集群,如果想在其他机器上访问,可以拷贝master
节点上$HOME/.kube/config
文件到该机器上对应目录即可访问
如果有多个集群可以访问,配置环境变量export KUBECONFIG={{config_path1}}:{{config_path2}}...
, 查看某个配置下的usercontext
, kubectl config view {{config_path}}
。
k8s使用usercontext
保存了某个集群上某个用户上下文,访问不同集群,也就是切换到某个用户上下文。
kubectl config use-context {{某个用户上下文}}
,切换不同集群,其中某个用户上下文就是上述命令kubectl config view {{config_path}}
输出出来的结果。
docker
相关
-
以
root
身份运行dockerdocker exec --privileged -u root it {{容器名字}} {{cmd}}
-
镜像历史及大小
docker history --no-trunc
和docker images --no-trunc