4244264d-b882-4ae7-9a0f-cc467923a9![[Notion/技术支持/Kubernetes/attachments/Untitled.png]]
[!note]+ ## HostNetwork 创建POD的时候开启hostNetwork这个POD就会只用NODE主机的IP地址。
Kubernetes 本身设计为单一集群。Kubernetes的工作方式是基于声明式配置 一个Kubernetes集群由一个或多个工作节点(物理或虚拟机)和一个控制面板节点组成。每个节点都会运行Pod,这些Pod是在它们之间进行调度的。你不能在单一的Kubernetes部署中创建多个集群。
另一种方法是使用一种称为多集群管理的模式,这涉及到将多个Kubernetes集群联合在一起,并使用一种集中式的工具或框架(比如Rancher,Google Anthos或者AWS EKS Anywhere)来管理它们。这样可以更好地扩展和管理跨多个地域或云的工作负载,同时仍然保持每个集群的独立性和隔离性。
此外,Kubernetes项目还在开发一种名为Cluster API的项目,这是一个能够以声明式的方式创建、配置和管理Kubernetes集群的API。这样可以使得Kubernetes集群的管理和扩展变得更加容易,同时也为跨多个集群的工作负载管理提供了可能性。
所以,总的来说,你不能在一个Kubernetes集群中创建多个集群,但你可以部署多个独立的Kubernetes集群,并有可能通过某些工具或技术来联合管理这些集群。
三个概念的层次关系:
因此,你可以把Kubernetes看作是一个多级系统,它允许你在多个服务器上以容器化的方式运行和管理应用程序。
容器之间和Pod之间都可以相互通信,通信方式和机制有所不同。
节点存在污点(taint) , pod可以配置污点容忍度(tolerations)
动态存储供应程序(Dynamic Storage Provisioners)与非动态存储供应的主要区别是:
简而言之,动态存储供应自动为你创建PV,而非动态存储需要你手动创建PV。
配置Pod时没有显式地定义**Node Selector**、亲和性(**Affinity**)、反亲和性(**Anti-Affinity**)等参数时,Kubernetes调度器会自动选择适合的Node节点来部署Pod。
apiVersion: v1
kind: Service
metadata:
name: mysql-service
labels:
app: mysql #控制器名称
spec:
# type: NodePort
type: LoadBalancer
ports:
- port: 3306
nodePort: 30001
# - port: 3307
# nodePort: 30002
selector: #选择控制器
app: mysql #控制器名称
调整API服务器配置:
如果您使用kubeadm部署Kubernetes,通常API服务器的置是位于
/etc/kubernetes/manifests/kube-apiserver.yaml。
您需要在此文件中找到spec.containers.command部分
并为kube-apiserver容器添加或修改--service-node-port-range参数。
例如,要允许1000-32767的端口范围,添加以下内容:
--service-node-port-range=1000-32767
自动重启API服务器:
当您编辑/etc/kubernetes/manifests/kube-apiserver.yaml文件时,
kubelet会注意到这个更改并重新启动API服务器容器。
重新创建或更新服务:
现在您应该可以使用所需的端口范围创建NodePort服务了。您可以指定nodePort为4040。
请注意,打开这样的端口范围可能会有安全隐患。确保您的防火墙和其他安全措施已经配置,以防止不必要的访问。
DaemonSet 是 Kubernetes 中的一个控制器(Controller),用于确保在集群中的每个节点上都运行一个副本(Pod)的实例。它通常用于在集群中的每个节点上部署守护进程,例如监控代理、日志收集器等。 DaemonSet 的特点和用途如下:
使用 DaemonSet 可以确保在整个集群中每个节点上运行相同的 Pod 副本,从而实现集群范围的服务或守护进程的部署。无论您的集群规模是大还是小,DaemonSet 都可以保证每个节点上都有相应的 Pod 运行,从而满足特定的应用场景和需求。