kubernetes基本概念及操作命令
一、几个概念:
kubernetes/pod/docker/container
1.K8S,就是基于容器的集群管理平台,它的全称,是kubernetes
2.Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。
3.pod是k8s中的最小部署单元,不是一个程序/进程,而是一个环境
4.一个pod可以运行1个或多个container
kubernetes中的DaemonSet等概念
DaemonSet DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 Volume Volume是Kubernetes Pod中多个容器访问的共享目录。 hostPath hostPath 卷能将主机节点文件系统上的文件或目录挂载到您的 Pod 中 emptyDir emptyDir类型的Volume在Pod分配到Node上时被创建,Kubernetes会在Node上自动分配一个目录,因此无需指定宿主机Node上对应的目录文件。 这个目录的初始内容为空,当Pod从Node上移除时,emptyDir中的数据会被永久删除。
Pod状态
Pod 的 status
定义在 PodStatus 对象中,其中有一个 phase
字段。
Pod 的运行阶段(phase)是 Pod 在其生命周期中的简单宏观概述。该阶段并不是对容器或 Pod 的综合汇总,也不是为了做为综合状态机。
Pod 相位的数量和含义是严格指定的。除了本文档中列举的内容外,不应该再假定 Pod 有其他的 phase
值。
下面是 phase
可能的值:
挂起(Pending):Pod 已被 Kubernetes 系统接受,但有一个或者多个容器镜像尚未创建。等待时间包括调度 Pod 的时间和通过网络下载镜像的时间,这可能需要花点时间。
运行中(Running):该 Pod 已经绑定到了一个节点上,Pod 中所有的容器都已被创建。至少有一个容器正在运行,或者正处于启动或重启状态。
成功(Succeeded):Pod 中的所有容器都被成功终止,并且不会再重启。
失败(Failed):Pod 中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止。
未知(Unknown):因为某些原因无法取得 Pod 的状态,通常是因为与 Pod 所在主机通信失败。
二、操作命令
分两类:docker 命令和kubectl命令
docker 命令(管理容器,操作集群中单个节点上的资源)
查看运行中的容器
docker ps
进入运行中的容器
docker exec -it <containerId> /bin/bash
查看镜像列表
docker image ls
删除镜像
docker image rm <imageId> option[--force]
运行指定镜像
docker run -it <imageId> /bin/bash
停止运行container
docker container kill <containerId>
镜像制作
docker build -t <image-name>:<tag> -f <dockerfile> .
注意最后有一个点推送到华为云服务“云容器镜像服务“”
登录镜像服务器(这个在云容器镜像服务,点击登录指令会自动生成)
docker login -u *** -p *** swr.cn-north-5.myhuaweicloud.com
给镜像打tag
sudo docker tag spark:20200110 swr.cn-north-5.myhuaweicloud.com/sparkonk8s/spark:20200110
推送镜像到服务器
sudo docker push swr.cn-north-5.myhuaweicloud.com/sparkonk8s/spark:20200110
大概规律就是:docker <资源类型> <操作类型> <实例Id>
kubectl命令(管理集群,操作整个集群中资源)
下列命令在华为云服务“云容器引擎”中操作样例
1.操作pod
查看pod列表:kubectl get pods opiton[--namespace=<namespaceName>]
删除pod:kubectl delete pod <podId>
查看pod日志:kubectl logs <podId>
查看pod详情:kubect describe pod <podId>
查看单个pod:kubect get pod <podId> option[--output=yaml]
指定yaml创建pod:kubectl create -f <template.yaml>
或者 kubectl apply -f <template.yaml>
,可以修改模板文件,重新apply来做升级
2.操作damonset
查看daemonset列表:kubectl get daemonsets opiton[--namespace=<namespaceName>]
删除damonset:kubectl delete daemonset <daemonsetId>
指定yaml文件运行damonset:kubectl create -f <template.yaml>
或者 kubectl apply -f <template.yaml>
,可以修改模板文件,重新apply来做升级
3.操作节点
查看节点:kubectl get nodes option[--show-labels] option[--output=wide]
给节点打标签:kubectl label nodes <your-node-name> disktype=ssd
优雅的结束节点上的所有 pod 并同时标记节点为不可调度:kubectl drain <nodename>
重新使节点可调度:kubectl uncordon <your-node-name>
4.serviceaccount
创建serviceaccount:kubectl create serviceaccount <servicecount-name>
查看serviceaccount:kubectl get serviceaccounts
5.角色绑定
创建角色绑定:
kubectl create clusterrolebinding <role-binding-relation-name> --clusterrole=<role-name> --serviceaccount=<namespace-name>:<serviceaccout-name>
删除角色绑定:kubectl delete clusterrolebinding <role-binding-relation-name>
大概规律就是:kubectl <操作类型> <资源类型> <实例Id>
- 点赞
- 收藏
- 关注作者
评论(0)