
xiaojizhi2023
2023/03/08阅读:14主题:默认主题
kubernetes使用之一

Kubernetes使用之一
简介
Pod定义:Pod是Kubernetes中的最小调度单元,k8s是通过定义一个Pod的资源,然后在Pod里面运行容器,容器需要指定一个镜像,就可以用来运行具体的服务。一个Pod封装一个容器(也可以封装多个容器),Pod里的容器共享存储、网络等。也就是说,应该把整个pod看作虚拟机,然后每个容器相当于运行在虚拟机的进程;
Pod网络:Pod是有IP地址的,每个pod都被分配唯一的IP地址(IP地址是靠网络插件calico、flannel、weave等分配的),Pod中的容器共享网络名称空间,包括IP地址和网络端口,Pod内部的容器可以使用localhost相互通信,Pod中的容器也可以通过网络插件calico与其他节点的Pod通信;
Pod存储:Pod创建的时候可以指定挂载的存储卷,Pod中的所有容器都可以访问共享卷,允许这些容器共享数据,Pod只要挂载持久化数据卷,Pod重启之后数据还是会存在的;
Kubernetes支持多个虚拟集群,它们底层依赖于同一个物理集群,这些虚拟集群被称为命名空间,命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间,例如,可以为test、devlopment、.production环境分别创建各自的命名空间。
Kubernetes 组件介绍
-
Master 节点
-
kube-apiserver:API 集群统一入口,各组件协调者,以 HTTP API 提供接口服务,所有对象资源的增删查改和监听操作都交给 APIServer 处理后再提交给 Etcd 存储; -
kube-scheduler:(调度器)负责对资源进行调度,分配未分发 Pod 绑定到可用的 Node 节点上,存储到 etcd 中; -
kube-controller-manager:管理控制器,一个资源对应一个控制器,CotrolerManager 负责管理监控 pod 运行状态,根据 etcd 中的信息, 调用 node 中的 kubelet 创建 Pod; -
Etcd:用来保存集群所有状态的 Key/Value 存储系统,所有 Kubernetes 组件会通过 API Server 来跟 Etcd 进行沟通从而保存或读取资源状态,如 Pod、service 等对象信息;
-
-
Node 节点
-
kubelet:是 Master 在 Node 节点上的 Agent,负责具体的容器生命周期管理,根据从数据库中获取的信息来管理容器,并上报 pod 运行状态等,下载 secret、获取容器与节点状态,kubelet 将每个 Pod 装换成一组容器; -
kube-proxy:在 Node 节点实现 Pod 网络代理; -
docker/rocker/rkt:运行容器; -
calico、coredns
-
应用
Pod资源清单
可通过
kubectl explain pods.metadata
命令查看对应的字段可通过
kubectl logs -f podName
命令动态查看pod日志可通过
kubectl exec -it podName -c containerName -- /bin/sh
命令进入到pod里的容器
kubectl run podName --image=anyu967/tomcat-8.5-jre8:v1 --image-pull-policy=IfNotPresent --port=8080
获取yaml配置
kubectl get pods podName -o yaml
apiVersion: v1
kind: Pod
metadata:
# Pod的名字
name: tomcat-test
# 命名空间
namespace: default
labels:
app: tomcat # Pod具有的标签
spec:
containers: # <[]Object>
- name: tomcat-java # Pod里容器的
ports:
- containerPort: 8080
name: web
image: anyu96/tomcat-8.5.jre8:v1
imagePullPolicy: IfNotPresent
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "tomcat-test",
"namespace": "default",
"labels": {
"app": "tomcat"
}
},
"spec": {
"containers": [
{
"name": "tomcat-java",
"ports": [
{
"containerPort": 8080,
"name": "web"
}
],
"image": "anyu96/tomcat-8.5.jre8:v1",
"imagePullPolicy": "IfNotPresent"
}
]
}
}

作者介绍
