【学习笔记】k8s

在k8s进行管理应用的时候,基本步骤是:创建集群,部署应用,发布应用,扩展应用,更新应用。
在k8s只要使用两条指令就可以创建一个集群,一个是kubectl init进行初始化,创建一个master节点,第二条指令就是kubectl join xxx创建一个node节点,加入这个集群。
创建集群之后,如何查看集群信息

k8s相关概念

k8s集群中有master和node两种角色,master负责管理node,node负责管理容器
 Kubernetes的整体架构

1.pod(部署应用)
k8s是一个调度容器的工具,所有的容器可看成一个集群。集群有两种节点,一种是负责调度的master节点,一种是负责提供服务的node节点。master节点只能有一个,node节点有多个,并且要向master节点汇报工作。node节点里面可以运行容器,一个容器可以叫一个pod,功能相关的各个容器也可以看成是一个pod。集群调度的最小单元就是一个pod
思考:为什么要用pod?
相当于一个vm管理几个进程,在同一个pod的容器可以共享资源,IP地址,方便管理和调度
只要有一个pod,那么就可以产生无数个pod。。。。(扩容缩容)
2.service(发布应用)
service用来关联几个pod的,用来对外提供端口,对pod起到负载均衡的作用,就算pod地址发生改变也可以通过负载均衡重新找到pod的地址。pod和service之间通过lable来关联。
3.lable
键值对的形式来关联资源
4,pod控制器
来管理pod的生命周期,比如deployment,job
5.volume
独立于容器文件外的储存空间
6.namespace
命名空间,提供逻辑上的空间隔离,进行资源隔离

k8s的架构设计

k8s集群中有master和node两种角色,master负责管理node,node负责管理容器

master的组成

1.API server进程
为各类资源提供了增删改查的HTTP REST接口,提供认证授权机制。
访问API server进程有三种方式:

  • 直接通过REST Request的方式来访问
  • 通过命令行工具kubectl客户端来访问
  • 编程的方式

2.etcd
数据库

3.调度器(scheduler)
是pod资源的调度器,监听未分配的pod资源,为其主动分配node

4.控制器管理器(controller manager)

node的组成

1.kubelet
2.kube-proxy
3.容器进行时(container runtime)

组件间的基本交互进程

k8s集群组件

核心组件
etcd
apiserver
controller manager
scheduler
kubelet
container runtime
kube-proxy
core DNS

k8s网络

确保
同一个pod内的通信
不同pod之间的通信
pod与service之间的通信
集群外部流量同service之间的通信
网络插件

pod基本操作

1.定义创建pod
创建一个Hello World Pod,运行一个输出“Hello World的容器”

  • 定义hello-world-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: hello-world
spec:
  restartPolicy: OnFailure
  containers:
  - name: hello
    image: "ubuntu"
    command: ["/bin/echo","hello”,”world"]
  • 字段解释
apiVersion: 声明K8s的API版本
kind: 声明API对象的类型,这里是Pod
metadata:设置Pod的元数据
  name: hello-world 指定Pod的名称Pod名称必粗在Namespace内唯一
spec:配置Pod的具体规格
  restartPolicy: 重启策略
  containers:容器规格,数组形式,每一项定义一个容器
  - name:指定容器的名称,在Pod的定义中唯一
    image:设置容器镜像
    command:设置容器的启动命令
  • 创建
kubectl create -f hello-world-pod.yaml

2.查询Pod

kubectl get pod hello-world
 
#JSON格式显示Pod的完整信息
kubectl get pod hello-world --output yaml
 
#YAML方式显示Pod的完整信息
kubectl get pod hello-world --output json

状态和生命周期查询

kubectl describe pod hello-world

3.更新Pod
更新

kubectl replace -f hello-world-pod.yaml

重建Pod(由于Pod的很多属性没办法修改,比如容器镜像,这时候可以采用–force参数)

kubectl replace --force -f hello-world-pod.yaml

4.删除Pod
通过kubectl delete删除指定Pod

kubectl delete pod hello-world

通过kubectl delete批量删除全部Pod

kubectl delete pod --all

k8s集群的部署

部署方式
kubeadm
部署环境
准备工作
安装kubeadm
部署集群
初始化+加入节点

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐