作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们在上小节介绍了master上的4个核心组件,这4个核心组件都是以静态pod方式存在的。也只有这几个是以静态的pod,其他的组件则是以其他方式运行的
1.Kubelet
是 Kubernetes Agent,负责与 Master 节点通信并管理 Node 上的容器操作。它监控和报告 Node 上的容器状态,执行容器的创建、启动、停止等操作。
kubelet是我们在部署k8s的时候通过yum 直接安装的,所以kubelet是二进制方式运行的。
[root@master01 kubelet]# cat /var/lib/kubelet/config.yaml
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
anonymous:
enabled: false
webhook:
cacheTTL: 0s
enabled: true
x509:
clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:
mode: Webhook
webhook:
cacheAuthorizedTTL: 0s
cacheUnauthorizedTTL: 0s
cgroupDriver: systemd
clusterDNS:
- 10.96.0.10
clusterDomain: cluster.local
cpuManagerReconcilePeriod: 0s
evictionPressureTransitionPeriod: 0s
fileCheckFrequency: 0s
healthzBindAddress: 127.0.0.1
healthzPort: 10248
httpCheckFrequency: 0s
imageMinimumGCAge: 0s
kind: KubeletConfiguration
logging:
flushFrequency: 0
options:
json:
infoBufferSize: "0"
verbosity: 0
memorySwap: {}
nodeStatusReportFrequency: 0s
nodeStatusUpdateFrequency: 0s
rotateCertificates: true
runtimeRequestTimeout: 0s
shutdownGracePeriod: 0s
shutdownGracePeriodCriticalPods: 0s
staticPodPath: /etc/kubernetes/manifests
streamingConnectionIdleTimeout: 0s
syncFrequency: 0s
volumeStatsAggPeriod: 0s
kubelet涉及的配置比较多,而且也不仅仅包含这一个文件,这里只列举了比较重要的配置文件。
2.Kube-Proxy
负责网络代理和负载均衡,处理集群内部和集群外部的网络流量转发。它维护了集群内部的网络规则和服务发现,使得容器能够相互通信和访问集群内外的服务。
Kube-Proxy通过kubeadm方式部署的话,目前部署方式是通过DaemonSet资源。DaemonSet确保在每个节点上运行一个kube-proxy实例。这样我们只需要配置一次,后续无法是增加节点还是减少节点均不需要关注。
如果是以iptables作为网络模式,则Kube-Proxy的作用就是维持节点的iptables规则,理论上所有节点的iptables的规则都是相同的,在日常运维中也出现过iptables规则异常,通过删除kube-porxy的pod触发重新创建恢复规则。
这里的node主要是跑业务容器,所以只介绍了2个比较核心组件,其实这2个组件在master节点也有(master也是一个特殊节点),kubelet主要用于pod的生命周期管理,kube-proxy则是为了提供svc的通信(pod的跨主机通信不依赖kube-proxy),它依赖的是网络插件。
3.架构
这里的每一条线都是https通信,而且是双向证书,和传统的https通讯单向证书还不太一样,这个也是k8s的核心之一。
这里还多延申了一个控制器,是因为官方的控制器并不能满足所有业务需求,所以这里引入了第三方控制器,用于控制一些第三方资源。在各个云厂商有很多产品,很多都会以k8s作为了标准底座,所以就会很多类似的第三方控制器,也是k8s的的一个发展方向。
到这里我们对整个集群都有一定的认识,后面我们讲整个k8s的里面涉及打概念进行进一步的讲解。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。