网站首页 > 精选教程 正文
Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.
k8s是一个开源的云操作系统,能够用来自动化部署,扩缩容和管理我们的容器应用,简单来说,就是提供了容器编排和管理功能的系统
架构图
Master:
- ApiServer:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
- Scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
- Controller-Manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
- ETCD:保存了整个集群的所有信息;
node:
- Kubelet :负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
- docker:负责镜像管理以及Pod和容器的真正运行(CRI);
- kubeproxy:负责为Service提供cluster内部的服务发现和负载均衡;
核心附件:
- CoreDNS:负责为整个集群提供DNS服务
- Dashboard:提供一个简单的GUI界面来查看集群信息和操作集群
- Ingress:为服务提供外网入口,提供域名访问服务功能
- Flannel:为集群之间提供网络连接服务,分配pod和serviceIP功能
基本概念
- 容器:一种轻量级、可移植、自包含的软件打包技术
- Master:为用户可和服暴露API,以最优方式调度工作负载,编排其他组件
- Pod: k8s最小调度单位,封装了一个或者多个容器的资源对象,Pod内所有容器共享命名空间和存储资源,类比豌豆荚
- 资源标签:一个键值型(key/value)数据,辨别pod的属性,或者帮助Scheduler来进行调度
- 标签选择器: Lable Selector,根据标签过滤符合条件的资源对象
- namespace:资源对象的隔离,Service、Deployment、Pod
- Volume:存储卷,独立于容器文件系统的存储空间,为容器提供持久存储能力
- Pod控制器:用户不会直接部署管理pod,借助另一个抽象的工具【控制器(control) 】进行管理,保证副本数量达到预期
以下是Control的类型和功能列表
作用:资源配额的隔离:CPU、Memory
kubectl get namespace
NAME STATUS AGE
default Active 28d
kube-public Active 28d
kube-system Active 28d
创建一个命名空间
$ cat namesapce-dev.yaml
apiVersion: v1
kind: Namespace
metadata:
name: dev
$ kubectl create -f namesapce-dev.yaml
简单命令创建
kubectl create ns dev
kubectl get all -n kube-system #查看一个命名空间下所有的内容
注意:不同命名空间下SvcIP、PodIP是可以访问的,是对名字的隔离
k8s集群的网络
目的:
所有Pod之间不需要经过NAT直接通信,都在一个扁平的网络空间内
所有集群内节点可不经过NAT机制直接和所有容器进行通信
分类:
- 各主机自身的网络,地址配置于主机网络接口,配置于k8s集群构建之前,不能由k8s管理
- k8s集群专用于pod资源对象的虚拟网络,配置在Pod的容器接口上,为Pod设定IP和网络,借助于CNI插件实现,可部署k8s集群之外或者托管在集群上,需要在构建集群有管理员定义
- 专用于service资源对象的虚拟网络,不配置在任何主机或者容器的网络接口,通过node的kube-proxy配置为iptables或者ipvs规则,网络在集群创建时指定Kubernetes 资源对象
Kubernetes 资源对象
资源类型( resource type )是指在URL 中使用的名称,如Pod 、Namespace 和Service等,其URL 格式为“ GROUPNERSION度ESOURCE ”,如apps/v1/deployment 。
- apiVersion 版本号,例如 v1
- kind 代表着资源对象所属的类 Pod/Deployment/Service/Namespace
- metadata 字段为资源提供元数据信息,如名称、隶属的名称空间和标签等;
- spec 则用于定义用户期望的状态,不同的资源类型,其状态的意义也各有不同
- status 则记录着活动对象的当前状态信息,它由Kubemetes 系统自行维护,对用户来说为只读字段
如果是YAML 格式的清单文件,多个资源彼此之间要使用—
单独的一行进行资源分割,这样,多个资源就将以清单文件中定义的次序被create 、apply等子命令调用
kubectl api-versions 查看现有api的版本
kubectl常用命令
kubectl 的命令分类:
1、创建一个nginx的deployment
$ kubectl run nginx-deploy --image=nginx:1.12 --port=80 --replicas=2
2、对nginx-deploy进行扩缩容
$ kubectl scale deploy/nginx-deploy --replicas=3
3、对nginx-deploy进行服务端口暴露,通过Service的8080端口转发至容器的80端口上
$ kubectl expose deployment nginx-deploy --port=8080 --target-port=80
4、将nginx-deploy暴露为NortPort
$ kubectl expose deployment nginx-deploy --type="NodePort" --port=80 --name=my_nginx_web
5、打印容器日志
$ kubectl logs coredns-7b47bbb54c-q6dkr -n kube-system -f
.:53
[INFO] plugin/reload: Running configuration MD5 = 1588bb3af386f386c40674040e2b3399
______ ____ _ _______
/ ____/___ ________ / __ \/ | / / ___/ ~ CoreDNS-1.6.3
/ / / __ \/ ___/ _ \/ / / / |/ /\__ \ ~ linux/amd64, go1.12.9, 37b9550
/ /___/ /_/ / / / __/ /_/ / /| /___/ /
\____/\____/_/ \___/_____/_/ |_//____/
-f 用于持续监控指定容器中的日志输出,类似于tail -f
6、进入容器执行命令
格式: kubectl exec -it <Pod-name> /bin/bash
#进入容器,如果一个pod里面有多个容器加 -c <container name> 指定容器
$ kubectl exec -it nginx-deploy-64c7978669-2x5xz -n kube-system /bin/bash
7、删除某个命名空间所有pod
$ kubectl delete pods --all -n kube-public
8、查看版本
$ kubectl version --short #查看版本,也可以使用kubectl get node查看
Client Version: v1.15.0
Server Version: v1.15.0
9、运行一个测试容器
$ kubectl run client --image=busybox --restart=Never -it -- /bin/sh
10、命令的测试运行,选项--dry-run
$ kubectl run nginx-deploy --image=nginx:1.12 --port=80 --replicas=2 --dry-run
11、给指定节点打标签
$ kubectl label nodes master disktype=ssd
12、查看集群所有支持的api
kubectl api-versions
猜你喜欢
- 2024-10-13 离线项目实践之sdk数据收集 离线sdk什么意思
- 2024-10-13 记录自己的centos服务器部署过程 服务器centos安装
- 2024-10-13 Nginx + PHP –未指定输入文件 nginx未启用
- 2024-10-13 编译安装Nginx,并使用jemalloc优化内存分配
- 2024-10-13 好程序员云计算学习路线分享软件包管理
- 2024-10-13 详细到只要知道Linux的人都会用的java架构师必备Linux命令
- 2024-10-13 如何在kubernetes1.12.1 上部署Ingress-nginx
- 2024-10-13 Nginx反向代理与负载均衡 nginx反向代理的主要作用
- 2024-10-13 记一次生产环境FastDFS文件系统安装部署过程
- 2024-10-13 centos6.8安装nginx1.11.12 centos6.8安装python3.10
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)