De Babak Salamat e David Oppenheimer, engenheiros de software do Google Kubernetes Engine
Não seria ótimo se você pudesse garantir que as cargas de trabalho mais importantes recebessem sempre os recursos necessários para execução em um cluster do Kubernetes? Agora, isso é possível. No Kubernetes 1.9 , lançamos um recurso alfa chamado "prioridade e preempção " que permite atribuir prioridades às cargas de trabalho. Dessa forma, os pods menos importantes serão substituídos pelos mais importantes quando o cluster ficar cheio.
Antes da prioridade e preempção, os pods do Kubernetes eram agendados exclusivamente por ordem de chegada e eram executados até o fim (ou indefinidamente, no caso dos pods criados por Deployment ou StatefulSet, por exemplo). Como resultado, cargas de trabalho menos importantes podiam impedir a execução de cargas mais importantes iniciadas posteriormente. Esse problema é resolvido pela prioridade e preempção.
O novo recurso é muito útil em diversas situações. Por exemplo, imagine que você quer limitar o escalonamento automático a um tamanho máximo de cluster para controlar os custos ou tem clusters que não podem ser ampliados em tempo real (por exemplo, clusters locais que exigem a compra e a instalação de hardware adicional para a ampliação). Ou você tem cargas de trabalho prioritárias na nuvem que precisam aumentar o dimensionamento com mais rapidez que a adição de nós ao cluster pelo autoescalador. Resumindo, prioridade e preempção permitem aprimorar a utilização de recursos, reduzir os custos e aumentar os níveis de serviço para aplicativos críticos.
Custos de cluster previsíveis sem sacrificar a segurança
No ano passado, a comunidade do Kubernetes deu um passo gigantesco na escalonabilidade e no suporte de sistemas para ambientes multilocatário. O resultado foi um crescente número de clusters do Kubernetes que executam serviços críticos voltados ao usuário (por exemplo, servidores web, servidores de aplicativos, back-ends e outros microsserviços no caminho de entrega direta) e cargas de trabalho sem requisitos críticos de tempo (por exemplo, canais de análise de dados diários ou semanais, tarefas de análise pontuais, experimentos de desenvolvedores etc.). O compartilhamento de um cluster dessa forma é muito eficiente do ponto de vista dos custos porque permite executar, de forma parcial ou completa, esse segundo tipo de carga de trabalho com os recursos ociosos não utilizados pelas cargas críticas (mas que continuam sendo cobrados). Na verdade, um estudo de cargas de trabalho internas do Google concluiu que o não compartilhamento de clusters entre cargas de trabalho críticas e não críticas pode aumentar os custos em até 60%. Na nuvem, onde o tamanho dos nós é flexível e há menos fragmentação de recursos, não esperamos resultados tão substanciais com o recurso de prioridade e preempção do Kubernetes, mas a premissa geral continua válida.
A abordagem tradicional para ocupar recursos ociosos é executar cargas de trabalho menos importantes como BestEffort . Entretanto, como o sistema não reserva explicitamente recursos para pods BestEffort, eles poderão não receber CPU suficiente ou ser eliminados se o nó esgotar a memória, mesmo que consumam poucos recursos.
Uma alternativa melhor é executar todas as cargas de trabalho como Burstable ou Guaranteed para que recebam uma garantia de recursos. Porém, essa alternativa pode levar a um conflito entre custos previsíveis e segurança contra picos de carga. Por exemplo, considere um serviço voltado ao usuário que recebe um pico de tráfego enquanto o cluster está ocupado com cargas de trabalho analíticas sem requisitos críticos de tempo. Sem os recursos de prioridade e preempção, você pode priorizar a segurança, configurando o autoescalador do cluster sem um limite máximo ou com um limite muito alto. Assim, ele pode gerenciar o pico de carga, mesmo quando está ocupado com cargas de trabalho sem requisitos críticos de tempo. Uma alternativa pode ser optar pela previsibilidade, configurando o autoescalador do cluster com um limite pequeno. Entretanto, isso pode impedir o aumento de escala do serviço em níveis suficientes para lidar com cargas inesperadas.
Por outro lado, com a adição da prioridade e da preempção, o Kubernetes elimina pods da carga de trabalho sem requisitos críticos de tempo quando o cluster fica sem recursos. Dessa forma, você pode usar um limite máximo para o tamanho do cluster sem se preocupar com o aumento de escala do canal de entrega para conseguir processar picos de tráfego. Vale destacar que, antes de serem eliminados, os pods recebem um período de carência de encerramento (por padrão, 30 segundos).
Mesmo que você não se importe com o conflito previsibilidade vs. segurança, o recurso de prioridade e preempção continuará sendo útil, porque normalmente a preempção elimina um pod antes que o provedor de nuvem consiga provisionar um nó do Kubernetes. Por exemplo, imagine a ocorrência de um pico de carga em um serviço de alta prioridade voltado ao usuário. O Horizontal Pod Autoscaler cria novos pods para absorver a carga. Se houver cargas de trabalho de baixa prioridade no cluster, os novos pods, que têm maior prioridade, poderão iniciar a execução assim que os pods das cargas de trabalho de baixa prioridade forem eliminados. Ou seja, eles não precisam esperar que o autoescalador do cluster crie novos nós. Os pods de baixa prioridade eliminados voltarão a ser executados quando o autoescalador do cluster adicionar nós para eles (se você quiser usar prioridade e preempção dessa forma, é uma boa ideia definir um período de carência de encerramento curto para as cargas de trabalho de baixa prioridade, o que acelera o início da execução dos pods de alta prioridade).
Ativação de prioridade e preempção no Kubernetes Engine
Recentemente, disponibilizamos o Kubernetes 1.9 no Google Kubernetes Engine e o recurso de prioridade e preempção nos clusters alfa. Veja como você pode usar esse novo recurso:
Crie um cluster alfa (considere as limitações citadas).
Siga as instruções para criar pelo menos duas PriorityClasses no cluster do Kubernetes.
Crie cargas de trabalho (usando Deployment, ReplicaSet, StatefulSet, Job ou o que achar melhor) com o campo priorityClassName preenchido com uma das PriorityClasses que você criou.
Se quiser, você também pode ativar o autoescalador do cluster e definir um tamanho máximo de cluster. Nesse caso, o cluster não vai crescer além do número máximo de nós definido. Os pods de maior prioridade eliminarão os de menor prioridade quando o cluster atingir seu tamanho máximo e houver pods pendentes das classes de maior prioridade. Se você não ativar o autoescalador do cluster, o comportamento da prioridade e preempção será o mesmo, exceto pelo tamanho do cluster, que será fixo.
Técnica avançada: como forçar a utilização de recursos ociosos
Como mencionamos antes, um dos motivos da prioridade e preempção é permitir que cargas de trabalho sem requisitos críticos de tempo usem os recursos ociosos de um nó entre cargas de trabalho importantes. Para impor essa abordagem, você pode associar uma carga de trabalho a uma PriorityClass cuja prioridade seja menor que zero. Dessa forma, o autoescalador do cluster não adiciona os nós necessários para executar essa carga de trabalho, mesmo que o cluster não tenha atingido o tamanho máximo definido para o autoescalador.
Assim, você pode criar três níveis de importância, em ordem decrescente, para as cargas de trabalho:
Cargas de trabalho que podem acessar todo o cluster, até o limite máximo do autoescalador
Cargas de trabalho que podem acionar o escalonamento automático, mas que serão excluídas se o cluster atingir o limite máximo definido e houver tarefas de maior prioridade aguardando execução
Cargas de trabalho que só usam recursos ociosos não utilizados pelas cargas de trabalho de maior prioridade, ou seja, quando não dispõem dos recursos para execução, aguardam até que esses recursos sejam liberados.
E, como o PriorityClass é número inteiro, você pode criar diversos subníveis dentro dessas três categorias.
Conte para a gente o que você acha disso!
O recurso de prioridade e preempção é uma adição muito bem-vinda no Kubernetes 1.9, facilitando o controle de utilização de recursos, estabelecendo níveis de cargas de trabalho e controlando custos. Prioridade e preempção ainda são um recurso alfa. Adoraríamos saber como você está usando esse recurso e as sugestões que você gostaria de fazer para aprimorá-lo. Nosso contato é: kubernetes-sig-scheduling@googlegroups.com .
Use a nosso período gratuito de 12 meses para começar a usar e experimentar rapidamente esse e outros recursos do Kubernetes Engine.
3 comentários :
Telah hadir situs poker online terbesar dan terbaik di indonesia pokerlounge99 khusus buat kamu penggemar poker online. Dengan berbagai pelayanan terbaik yang tersedia, lapak303 menyediakan kenyamanan dalam bermain seperti yang anda impikan. Anda bisa menikmati Layanan yang cepat dalam hal Pendaftaran, DEPOSIT dan WITHDRAW. Menjadikan miyabipoker sebagai tempat yang tepat bagi Anda yang ingin bermain judi poker dengan uang asli yang ingin bermain aman dan nyaman.
Keamanan data dan rahasia pribadi member ItuPoker juga akan terjamin.
Ayo langsung kunjungi website kami di pokerclub88
Belum lengkap rasanya bagi pecinta game poker online kalau belum pernah cobain lapak303 temukan sensasi berbeda di
pokerbo bermain poker online lebih seru karena tingkat keamanan kami sangat tinggi dan stabil. banyak bonus menarik bagi member-member setia kami. jangan lewatkan promo geratis pendaftaran di pokerclub minimal deposit sangat rendah cuma 25 ribu anda sudah bisa memainkan game poker serta game seru lainnya. kunjungi link alternatif pokerlounge99 2019 sekarang juga. raih keberuntunganmu di
pokerrepublik
Anda pengen game yang asyik dan seru? Mungkin game kartupoker yang mempunyai konsep atau memiliki jenis game kartu bisa menjadi salah satu solusi terbaik untuk Anda. remipoker 2019 Selain game kartu remi ataupun game domino, Anda bisa mengandalkan game poker sebagai salah satu game kartu yang tergolong paling seru dan menarik untuk dimainkan di HP Android. sekarang bukan jamannya repot main game poker cukup dengan gadget atau komputer dirumah anda semua sudah bisa memainkan rajaqq dirumah sambil tiduran atau bersantai. anda bisa bermain mengajak teman-teman anda, cukup dengan login dengan facebook atau media sosial lainnya anda sudah bisa memainkan game indoqq ini. segera daftar di link alternatif dominoqq 2019dan raih hoki anda sebanyak-banyaknya.
Postar um comentário