k8s相关知识整理

  • Post author:
  • Post category:其他


查看某个pod的信息

kubectl -n ${namespace} describe pod ${podName}

查看pods详细信息

kubectl get pods -n namespace -o wide

#kubectl patch:使用补丁修改、更新某个资源的字段,比如更新某个node

kubectl patch node/node-0 -p ‘{“spec”:{“unschedulable”:true}}’

kubectl logs查最后10条最新日志命令

kubectl logs –tail=10 kube-proxy-2dfdf5 -n kube-system

kubectl logs -f kube-proxy-2dfdf5 -n kube-system

进入POD内部

kubectl exec -it change-1124521512-pmnls /bin/bash

查看集群健康状态

kubectl get cs

kubectl cluster-info 查看集群信息

kubectl version 显示命令行和kube服务端的版本

kubectl api-versions 显示支持的api版本集合

kubectl config view 显示当前kubectl的配置信息

k8s 组件

组成:

kubectl:客户端命令行工具,作为整个系统的操作入口。

kube-apiserver:以 REST API 服务形式提供接口,作为整个系统的控制入口。

kube-controller-manager:执行整个系统的后台任务,包括节点状态状况、Pod 个数、Pods 和Service 的关联等。

kube-scheduler:负责节点资源管理,接收来自 kube-apiserver 创建 Pods 任务,并分配到某个节点。

etcd:负责节点间的服务发现和配置共享。

kube-proxy:运行在每个计算节点上,负责 Pod 网络代理。定时从 etcd 获取到 service 信息来做相应的策略。

kubelet:运行在每个计算节点上,作为 agent,接收分配该节点的 Pods 任务及管理容器,周期性获取容器状态,反馈给 kube-apiserver。

DNS:一个可选的 DNS 服务,用于为每个 Service 对象创建 DNS 记录,这样所有的 Pod 就可以通过 DNS 访问服务了。

docker

网络:

安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host

1.Host 使用宿主机的网络

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。(网络好,但隔离性差)

2.Bridge 此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。(类似交换机)

容器使用独立network Namespace,并连接到docker0虚拟网卡(默认模式)。通过docker0网桥以及Iptables nat表配置与宿主机通信;bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。

3.None 该模式关闭了容器的网络功能。

4.Container 创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。

新创建的容器和已经存在的一个容器共享一个Network Namespace,使用该容器的网络

Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络



版权声明:本文为qq_28297987原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。