Sobre computação em nuvem e plataforma de nuvem para construir Kubernetes

I. Introdução à Cloud Computing

1, a tecnologia de virtualização e as ligações Cloud Computing

Nuvem conceito de computação:

  • A computação em nuvem é uma rede, armazenamento, hardware, software, tecnologia integrada, destaca-se que o conceito de pools de recursos e grupos de recursos dinâmicos pode ser expansão ilimitada, redução de volume, e, finalmente, permitir que os inquilinos para alugar esses recursos.
  • A computação em nuvem é, finalmente, para prestação de serviços aos inquilinos, arrendatários de acordo com as suas necessidades, para aplicar pool de recursos, pools de recursos fornecem uma plataforma chamada plataforma de nuvem.

Virtualização conceitos:

  • tecnologia de virtualização para os recursos físicos em recurso lógico podem ser gerenciados para quebrar a estrutura de recursos barreiras físicas, para que o serviço está sendo executado em uma máquina virtual em uma base virtual, em vez de executar diretamente sobre os recursos físicos.

Contato: tecnologia de virtualização é um módulo na nuvem, e é um módulo integral. Computação em nuvem oferece uma grande variedade de pooling de recursos, a tecnologia de virtualização é uma alocação desses recursos no pool de recursos para a máquina virtual. Em seguida, coloque a máquina virtual para venda às PME individuais inquilinos foram alugados a preços diferentes em diferentes configurações.

2, a classificação da computação em nuvem

classificação de tipo (1) serviço

  • IaaS (Infrastructure as a Server)
  • PaaS (Platform as a Server)
  • SaaS (Software as a Server)
    Aqui Insert Picture Descriçãoanálise de padrões:
  • Sem a nuvem, o que precisamos fazer é a parte mais à esquerda verde (ou seja, tudo)
  • Quando introduzimos IaaS, as coisas marrom para a próxima parte da plataforma de nuvem, a parte verde acima lidar com seus próprios (fornecimento de hardware, como rede, armazenamento, etc.)
  • Quando introduzimos PaaS, figura mostra, só usamos os seus próprios serviços de implantação de software.
  • Quando introduzimos SaaS, podemos usar o software desenvolvido pelo provedor de nuvem, estes são os softwares existentes de código aberto em software em geral, livre para o desenvolvimento secundário, com desempenho superior, maior apoio e otimização. Como SaaS, nós basicamente só fornecem código do Web site. O que mais não tem que mantê-lo a si mesmo.

Mais descrição da imagem está disponível em blog: https://blog.csdn.net/weixin_44571270/article/details/89737883

(2) servir para a classificação de objecto

  • nuvem pública
  • private Cloud
  • Nuvem híbrida

3, entrada Kubernetes

1, Kubernetes está fazendo?
Kubernetes também conhecido K8S, porque há oito letras e nome do meio. É uma automação plataforma de gestão de contentores. Nascido para gerenciar estivador recipiente nascido. Use Kubernetes pode alcançar as seguintes funções:

  • Implantação e recipiente replicação automatizado;
  • Sinta-se livre para expandir ou encolher o tamanho do recipiente;
  • Os recipientes estão organizados em grupos, e para proporcionar o equilíbrio de carga entre os recipientes;
  • atualizado facilmente nova versão do contêiner de aplicativos;
  • Proporcionar um recipiente elástica, o recipiente não se substitui similares.

2, Kubernetes plataforma componentes
Kubernetes agrupar Existem dois principais tipos de nós: mestre, o nó Minion, nó Minion para o nó que executam recipientes Docker, encaixe em execução no nó e é responsável pela interacção, e fornece uma função de proxy. O principal mestre está a gerir um grande número de nós distribuídos de Minion.

  • Kubelect Master: nó mestre responsável pela interface API externa fornece uma gama de clusters e nós gerenciados interagem e Minion é alcançada por operar a gestão do cluster.
  • Apiserver: Conjunto de entrada interacção do utilizador e Kubernetes, deleções objecto núcleo encapsula operação de busca de mudança, fornecida interface API estilo RESTFul, persistência é conseguido por ETCD e manter a consistência do objecto.
  • Scheduler: responsável pela programação e gestão de recursos de cluster, tais como quando um pod fechar inesperadamente precisam máquinas de distribuição re-programador, através de um determinado algoritmo de escalonamento para encontrar o nó mais apropriado.
  • Controlador-manager: usado principalmente para garantir número pod consistente de cópia ea operação real de replicação de controlador definido, e também para garantir que o mapeamento de serviço para o pod é sempre atualizado.
  • Kubelet: Docker executado interativamente em um nó servo, eo nó é responsável por, como iniciar e parar o recipiente e monitorar o status operacional.
  • Proxy: correndo nó assecla, é responsável por fornecer a funcionalidade de proxy para o pod, recebe regularmente informações sobre o serviço de ETCD, e para encaminhar o tráfego modificando o serviço iptables acordo com a informação (a versão original é fornecer encaminhando diretamente pelo programa menos eficiente). nó, eo tráfego em frente ao local onde você deseja acessar pod-se.
  • ETCD: ETCD kv consistência é uma base de dados distribuídos do sistema de armazenamento, pode ser usado para o registo e serviço de banco de dados de configuração de armazenamento descoberta partilhada é utilizada para Kubernetes armazenam informações, componente ETCD como, consistência forte descoberta serviço repositório altamente disponível, gradualmente preocupação para os desenvolvedores. Na era da computação em nuvem, como fazer um serviço rápido e acesso transparente a cluster de computação, como compartilhar informações de configuração são rapidamente encontrou todas as máquinas do cluster, mais importante, como construir uma alta disponibilidade tais, segurança, facilidade de implantação e serviços de resposta rápida cluster, ETCD nascido é resolver o problema.
  • Flanela: flanela é CoreOS equipe para um projeto da tampa net Kubernetes (a sobreposição
    de rede) ferramentas, o propósito de flanela é para todos nós em um planejamento conjunto re usar as regras de endereços IP, de modo que os recipientes em diferentes nós podem ser obtidas pertencem a uma rede e endereços únicos de IP, e assim que o recipiente pode pertencer a diferentes nós da rede IP através da comunicação direta.

Dois, plataforma Kubernetes nuvem para construir

negócios em geral, haverá vários nós mestre, alta disponibilidade costumam fazer, então não será ETCD distribuídos cluster. Mas quando aprendemos a tecnologia, não vai ser tão complicado. O sistema de arquitetura mais simples, precisa de pelo menos dois ou três servidores físicos.

ambiente construído

Aqui Insert Picture DescriçãoEu estou aqui, usando duas máquinas físicas. nó mestre K8s 201, nó 200 quando assecla, pode-se fazer ETCD. Compartilhar um servidor físico no nó mestre.

processo de construção

1, o prelúdio de instalação
#两个服务器都要执行以下命令:
setenforce 0
或者 sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
systemctl stop firewalld

#ntp时间同步,master节点和million节点需要时间一致
yum install ntp -y
ntpdate pool.ntp.org
systemctl start ntpd
2, a instalação do nó mestre
yum install kubernetes-master etcd -y
3, a configuração ETCD
vim /etc/etcd/etcd.conf

Aqui Insert Picture Descrição
Nota: A porta 2380 é a porta para comunicação entre o servidor e o servidor ETCD ETCD, também conhecido como porta de comunicação de cluster distribuído.
2379 porta para fornecer serviços de HTTP AP, isto é, para fornecer serviços ao cliente através da porta, onde a porta e para proporcionar serviços para o servo nó mestre.
27.0.0.1:2379 comando para executar conexão localmente ETCD, 172.16.193.201: 2379 para conexões remotas.

mkdir -pv /data/etcd
chown -R etcd.etcd /data/etcd
4, K8S configuração
cd /etc/kubernetes/
ll

Aqui Insert Picture Descrição
K8S sido instalada para produzir três serviços:

  • apiserver: Comando Unificado (operação) Entrada
    Aqui Insert Picture Descrição
  • controlador-manager: Se o recipiente falhar, ele irá criar um novo recipiente imediatamente para garantir que o número total de recipientes inalteradas
  • planejador: controlador de programação e descobriu que o recurso recipiente estiver cheio, ele será automaticamente enviado para outros recipientes.

Modificar K8S configuração de configuração:
Aqui Insert Picture DescriçãoIniciar três serviços:
Aqui Insert Picture Descrição

5, a instalação nó assecla
yum install kubernetes-node docker *rhsm* -y
6, K8S configuração

Depois de instalar o nó K8S assecla gera dois serviços:

  • kubelet: interagindo com janela de encaixe, emitiu um tarefas de ordem. Ou seja, o futuro não vai estivador prazo, docker ps então o. Você pode usar kubelet isso novamente. Você também pode criar uma interface web para executar em um recipiente.

Aqui Insert Picture Descrição

  • proxy: SNAT, DNAT é fazer aqui. tráfego para a frente, o processo específico é claro!

K8s assecla editar o arquivo de configuração:

vim config

Aqui Insert Picture DescriçãoInicie os dois serviços:
Aqui Insert Picture Descrição

7, a extremidade mestre vista nó Minion

Exibições:
Aqui Insert Picture Descriçãonós sequaz Delete:
Aqui Insert Picture Descriçãoadicionar nós assecla:
apenas dois serviços de reinício no nó assecla K8S.

8, flanela de instalação

Nota: Este serviço é unificar o IP atribuído ao recipiente janela de encaixe.

#这个flannel所有节点都要安装,无论master还是minion。
yum install flannel -y
vim /etc/sysconfig/flanneld

Aqui Insert Picture Descrição

etcdctl mk /atomic.io/network/config '{"network":"172.17.0.0/16"}'
#             这个是key                     这个是value
systemctl start flanneld

serviços de flanela instalação do Host:
Aqui Insert Picture Descrição
contentores Docker:
Aqui Insert Picture Descrição

Em terceiro lugar, construir K8S interface do Painel UI

1, o nó mestre para fazer a operação

(1) criar um painel-controller.yaml, arquivo Dashborad-service.yaml
touch Dashboard-controller.yaml

O seguinte conteúdo escrito para o arquivo:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
spec:
  selector:
    matchLabels:
      k8s-app: kubernetes-dashboard
  template:
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
        scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
    spec:
      containers:
      - name: kubernetes-dashboard
        image: bestwu/kubernetes-dashboard-amd64:v1.6.3
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
          requests:
            cpu: 100m
            memory: 50Mi
        ports:
        - containerPort: 9090
        args:
          - --apiserver-host=http://172.16.193.201:8080 #此处需要修改ip
        livenessProbe:
          httpGet:
            path: /
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30

touch Dashboard-service.yaml

O seguinte conteúdo escrito para o arquivo:

apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
spec:
  selector:
    k8s-app: kubernetes-dashboard
  ports:
  - port: 80
    targetPort: 9090
(2) alterar o ficheiro de configuração apiserver

Nota: Se você não remover parâmetros ServiceAccount que, api recusam o acesso à interface UI.

#KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

Se você for o último a encontrar as palavras para fazer este passo. Você precisa ser modificado, reiniciar apiserver, em seguida, execute:

kubectl delete -f Dashboard-controller.yaml
kubectl delete -f Dashboard-service.yaml

2, a operação de fazer nó Minion (este passo não pode ser omitida)

Nota: Esta etapa não pode, o próximo passo será o de baixar a sua própria imagem. Sob entender por que mudou seu nome na linha, versão K8S ea versão painel não pode ser que muita diferença, então eu não recomendo-se Docker puxar o espelho!

Baixar pod-infra-estrutura, imagem Kubernetes-dashboard:

docker pull docker.io/tianyebj/pod-infrastructure
docker pull docker.io/mirrorgooglecontainers/kubernetes-dashboard-amd64

#这个改名是因为Dashboard-controller.yaml文件中调用过这个镜像
docker tag docker.io/siriuszg/kubernetes-dashboard-amd64 bestwu/kubernetes-dashboard-amd64:v1.6.3

#这个改名是因为minion节点中的/etc/kubernetes/kubelet文件中调用过它
docker tag docker.io/tianyebj/pod-infrastructure registry.access.redhat.com/rhel7/pod-infrastructure

3, criar e executar um espelho

kubectl create -f Dashboard-controller.yaml
kubectl create -f Dashboard-service.yaml
iptables -P FORWARD ACCEPT (全部节点都要配置)

Erro: erro: yaml: Linha 38:
não encontrou chave esperado para todo este erro causou-me um longo, longo tempo.
Solução desses arquivos têm espaços não jogar direito. formato errado. Recopie ou menos. formato .json arquivo das rigorosas exigências do formato, a não mais espaço, não menos.

4, o acesso K8S interface UI

Verifique se uma interface de construção painel bem-sucedida:

kubectl get pods -namespace kube-system

Esta é uma falha:
Aqui Insert Picture Descrição
Ocorreu um erro, você pode ver o log:

kubectl logs kubernetes-dashboard-3584070908-vp0gl -n kube-system

Este é um sucesso:
Aqui Insert Picture DescriçãoAqui Insert Picture DescriçãoAqui Insert Picture DescriçãoSucesso!

Ele publicou 188 artigos originais · ganhou elogios 150 · vista 30000 +

Acho que você gosta

Origin blog.csdn.net/weixin_44571270/article/details/104767600
Recomendado
Clasificación