查看某个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隔离网络