Kubernetes作用
使用Docker我们将容器部署到单个主机上,但是当我们需要部署到多个主机上时,就需要使用Kubernetes来管理容器了。Kubernetes是一个开源的容器编排引擎,可以实现容器的自动化部署、弹性伸缩、服务发现和负载均衡等功能。
Kubernetes客户端使用API和Kubernetes集群交互,后者负责管理容器的运行状态,包括创建、销毁、调度、扩容等。
Kubernetes客户端与控制平面交互,控制平面管理一个由多个节点组成的集群中的容器化应用程序,应用程序作为Pod部署到集群的节点上。Kubernetes命令
在docker上创建一个名为Polar的Kubernetes集群,并声明cpu和内存大小,使用以下命令:
minikube start --cpus 2 --memory 4g --dirver=docker --profile=Polar
获取集群中的节点信息,使用以下命令:
kubectl get nodes
列出可以与之交互的所有可用上下文
kubectl config get-contexts
停止指定集群
minikube stop --profile Polar
pod是Kubernetes中最小的部署单元,一个pod中可以包含一个或多个容器,pod中的容器共享网络和存储资源,可以通过localhost进行通信。当从docker迁移到Kubernetes时,我们从管理容器切换到管理pod。
一个pod通常是由一个容器组成:
static final int MOD = (int) 1e9 + 7;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
PriorityQueue<BigDecimal> pq = new PriorityQueue<>((a, b) -> b.compareTo(a));
for (int i = 0; i < n; i++) {
long x = sc.nextInt();
pq.offer(BigDecimal.valueOf(x));
}
BigDecimal ans = BigDecimal.valueOf(0);
while (k-- > 0) {
BigDecimal x = pq.poll(), y = pq.poll();
pq.offer(x.multiply(y));
pq.offer(BigDecimal.valueOf(1));
}
while (!pq.isEmpty()) {
ans = ans.add(pq.poll());
}
System.out.println(ans.divideAndRemainder(BigDecimal.valueOf(MOD))[1]);
}