k8s是指kubernetes;是一种容器编排系统;其中最核心的组件是docker(就是自动运维管理docker的集群),整个系统都是围绕容器,对其进行管理,扩展,部署;有以下特性:
1 | 容器编排,实现容器的自动部署,调度和协调。 |
由两部分组成,master和node,架构如下:
工作原理
注意点
1 | 主节点和从节点,一般分别独立部署在不同服务器上,共同构成了k8s集群,集群可以有多个主从节点; |
K8S 的重要概念有 Deployment、Pod、Replica Set、Service 等
1 | pod(仓)是服务的闭包/集合,可以被理解成一群可以共享网络、存储和计算资源的容器化服务的集合;一个里面可以有多个docker服务; |
k8s要素关系
ingress集群内外通信拓扑图
k8s使用:
常用命令
命令结构:kubectl [command] [TYPE] [NAME] [flags]
1 | kubectl:k8s命令行工具; |
常用操作
部署服务
- 如何部署pod
1
2准备 Pod 的 yaml 配置文件;
执行 kubectl 命令部署:kubectl create -f ${POD_YAML文件}; - 如何部署Deployment
1
2
3准备 Deployment 的 yaml 配置文件;
执行 kubectl 命令部署:kubectl create -f ${DEPLOYMENT_YAML文件};
部署完以上两个对象后,就会自动的创建ReplicaSet 和pod,查看其的命令:get rs、get pod - 如何对服务操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22删
删除资源:kubectl delete ${RESOURCE} ${NAME} //${RESOURCE}资源类型如pod/rs ${NAME}资源名
删除pod:kubectl delete pod memory-demo
删除deployment:kubectl delete deployment ${DEPLOYMENT_NAME} //通过删除deployment来删除服务时,需要先删除deployment,然后还要在删除pod;见上方的调度结构;
强制删除:kubectl delete pod --force --grace-period=0 ${POD_NAME}
改:两种方式
改配置文件,然后重新创建:kubectl create -f ${YAML文件}
直接改:kubectl edit ${RESOURCE} ${NAME}如kubectl edit pod memory-demo
查
查看服务:$ kubectl get|describe ${RESOURCE} [-o ${FORMAT}] -n=${NAMESPACE} //# ${RESOURCE}有: pod、deployment、replicaset(rs)
查看服务前,必须要知道命名空间,查看命令空间:kubectl get ns;
查看特定命令空间的deployment:kubectl get deployment -n=oona-test;
查看特定命令空间的pod:kubectl get pod -n=oona-test;
查看特定命令空间的rs:kubectl get rs -n=oona-test;
获取所有命令空间的资源:kubectl get deployment/replicaset/pod --all-namespaces
命令加[-o wide],显示新学期更全,建议加:kubectl get deployment/replicaset/pod [-o wide] --all-namespaces
查看资源信息(部署是否成功等):kubectl describe ${RESOURCE} ${NAME}
查看舱内的服务日志:kubectl log ${POD_NAME} -c ${CONTAINER_NAME}。
进入 Pod 内部某个 container:kubectl exec -it [options] ${POD_NAME} -c ${CONTAINER_NAME} [args] //实际调用了docker容器的docker exec xx进入容器内部 - docker常用命令:分为镜像管理/容器管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37容器运行命令参数
1. --name 指定容器名称
2. -d 后台运行
3. -port 指定端口映射规则
4. --network 指定容器运行的网路模式
5. -v 指定需要挂载的数据卷
6. -env 指定需要传递给容器的环境变量
增
下载镜像:docker pull busybox
导出镜像:docker save busybox > busybox.tar
导入镜像:docker load < busybox.tar
push镜像到镜像仓库:docker push
删
删除镜像:docker rmi busybox:版本
改
改镜像名:docker tag busybox:latest busybox:test
给镜像加tag:docker tag jenkins:latest jenkins:3.6.0
查
查看docker版本:docker version
查看镜像:docker images
容器:
运行容器:docker run(运行) -d(后台方式) --name=busybox busybox:latest ping 114.114.114.114
查看运行容器:docker ps
查看所有容器:docker ps -a
重新启动容器:docker restart busybox
停止容器:docker stop busybox
杀死容器:docker kill busybox
删除运行容器:docker rm -f busybox
进入容器内:docker exec -it busybox
复制容器内文件:docker cp busybox:/etc/hosts hosts
查看容器日志:docker logs -f busybox - 服务部署失败了怎么办?
见k8s入门-简单好理解版本