Las notas de instalación más completas de Kubernetes

Cómo instalar K8S en centos y Ubuntu

1 El primer paso es instalar Docker

  1. Actualice la fuente del sistema
    Si el sistema tiene su propia dirección de espejo y el servidor está en un país extranjero, la velocidad de descarga será muy lenta. Puede abrir /etc/apt/sources.lis y reemplazarlo con una fuente de espejo local.
    actualización apto
  2. Actualizar paquete de software Actualice
    los componentes de software del sistema a la última versión estable.
    actualización apta
  3. Instale Docker
    3.1 proceso de instalación de ubuntu
    apt-get install docker.io
    3.2 Si necesita configurar para arrancar, ejecute el siguiente comando
    systemcd enable docker
    systemcd start docker

Si es centos, puede usar:
yum install -y docker.ce
o
wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce

Si desea configurar la aceleración de imágenes de Docker, abra el archivo /etc/docker/daemon.json, agregue o modifique los espejos de registro y agregue la dirección https://registry.docker-cn.com, o puede completar la aceleración de imágenes como Alibaba Cloud y Tencent Cloud habla a.
Ejemplo
{ "registro-espejos": [

    "https://kzflb.mirror.aliyuncs.com"

]

}

Reinicie Docker para que la configuración surta efecto
sudo systemctl daemon-reload
sudo systemctl restart docker

Por supuesto, también puede optar por instalar la versión especificada (después de todo, el servicio en el entorno de producción no puede ser demasiado radical)

Utilice el siguiente comando para ver la versión que se puede instalar

yum list docker-ce --showduplicates | sort -r

Por ejemplo: instale docker ce versión 18.03.0
yum install -y docker-ce-18.03.0.ce-1.el7.centos

2 El segundo paso es instalar K8S (Kubernetes)

  1. Ejecute el siguiente comando para instalar la herramienta https y k8s.
    apt-get update && apt-get install -y apt-transport-https curl
    apt-get install -y kubelet kubeadm kubectl --allow-unuthenticated
    ejecute el siguiente comando para probar si es normal
    kubeadm init

Si ocurre la siguiente situación durante la instalación, significa que el paquete k8s no se puede encontrar en la fuente espejo del sistema.
No hay paquete apt "kubeadm", pero hay un complemento con ese nombre.
Prueba "snap install kubeadm"
No hay paquete apt "kubectl", pero hay un complemento con ese nombre.
Prueba "snap install kubectl"
Sin paquete apt "kubelet" , pero hay un complemento con ese nombre.
Prueba "instalar kubelet instantáneamente"

2.1 cambios de ubuntu

Puede abrir el archivo /etc/apt/sources.list y agregar una línea de
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

Ejecute el comando para instalar K8s nuevamente.
Si
no se pudieron verificar las siguientes firmas porque la clave pública no está disponible

Luego ejecute el siguiente comando para agregar la clave por un período de tiempo.
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add

En el comando anterior, se instalan kubelet, kubeadm y kubectl. Kubelet es un servicio relacionado con k8s, kubectl es un cliente de administración de k8s y kubeadm es una herramienta de implementación.
Centos change
cat >> /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name = Kubernetes
baseurl = https: //mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
habilitado = 1
gpgcheck = 0
EOF

2.2 Inicialización

Si es centos, apague el firewall y selinux
systemctl deshabilite firewalld
systemctl stop firewalld
setenforce 0

Ejecute el siguiente comando para inicializar, descargará automáticamente la imagen de Docker requerida de la red.
Este comando se utiliza para implementar el nodo maestro (maestro).
Ejecute kubeadm version para verificar la versión, GitVersion: "v1.17.2" es el número de versión.

2.2.1 Ejecute el siguiente comando para inicializar

Primero desactive el intercambio e
ingrese el comando: swapoff -a
kubernetes Desactive el intercambio principalmente por consideraciones de rendimiento. Por supuesto, si no desea desactivar el intercambio, necesita:

  1. 编辑 / etc / sysconfig / kubelet, 添加 KUBELET_EXTRA_ARGS = "- fail-swap-on = false"
    #cat / etc / sysconfig / kubelet
    KUBELET_EXTRA_ARGS = "- fail-swap-on = false"

  2. Inicialización:
    #kubeadm init --kubernetes-version = Version-pod-network-cidr = pod network - service-cidr = Dirección de red donde se genera el servicio - ignore-preflight-errors = El intercambio
    es inicializado por kubeadm

	kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU

--Ignore-preflight-errors = NumCPU se usa cuando solo hay una CPU, como un servidor de estudiantes 1G1M.

Posibles problemas:

  1. [Preflight] Ocurrieron algunos errores fatales:
    / proc / sys / net / bridge / bridge-nf-call-iptables El contenido no está configurado en 1
    # 解决 方案 :
    echo 1> / proc / sys / net / bridge / bridge-nf- call-iptables
    echo 1> / proc / sys / net / bridge / bridge-nf-call-ip6tables

2.2.2 Es posible que deba descargar el espejo (debido a que está amurallado)

Pero debido a que necesita conectarse a Google, es posible que no pueda descargar contenido.
Podemos usar el comando kubeadm config images list para enumerar las imágenes que deben extraerse. Vamos a extraerlo manualmente a través de Docker. Este proceso es más problemático y debe modificar manualmente el nombre de la imagen.
Extraer el método docker pull {nombre del espejo}.
Google no puede acceder a él, pero DockerHub ha realizado una copia de seguridad de la imagen requerida.
mirrorgooglecontainers Este repositorio hace una copia de seguridad del espejo correspondiente. Desafortunadamente, las imágenes no siempre son la última copia de seguridad. El almacén google_containers en Alibaba Cloud debe tener una copia de seguridad y estar actualizado.
Por ejemplo, se requiere el siguiente espejo:
k8s.gcr.io/kube-apiserver:v1.17.2
k8s.gcr.io/kube-controller-manager:v1.17.2
k8s.gcr.io/kube-scheduler:v1.17.2
k8s.gcr.io /kube-proxy:v1.17.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.5

Luego, extraiga la imagen correspondiente, guarde el siguiente código en code down.sh, y luego chomd 777 ./down.sh para otorgar permisos.

La versión de la imagen de descarga debe descargarse de acuerdo con sus necesidades. El kubernetes v1.17.2 usado en este ejemplo es realmente bueno para mí para probar la versión anterior v1.17 +.

#!/bin/bash
images=(
    kube-apiserver:v1.17.2
    kube-controller-manager:v1.17.2
    kube-scheduler:v1.17.2
    kube-proxy:v1.17.2
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.5
)
for imageName in ${images[@]} ; do
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
        docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done

Finalmente ejecute el comando de inicialización inicial.
Si no funciona, puede probar el tutorial de instalación en https://learnku.com/articles/29209.

2.2.3 Hacer efectivo el nodo maestro

Agregue la variable de entorno
export KUBECONFIG = / etc / kubernetes / admin.conf,
también puede seguir las instrucciones después de una instalación exitosa:
mkdir -p $ HOME / .kube
sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
sudo chown (id - u): (id -u):( yo d-u ): (id -g) $ INICIO / .kube / config

3 El tercer paso es agregar un complemento de red

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Ejecute el archivo de configuración de
yaml kubectl apply -f preparado por otros https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

También puede escribir yaml usted mismo en este paso.
Después de la ejecución,
odsecuritypolicy.policy / psp.flannel.unprivileged creado
clusterrole.rbac.authorization.k8s.io/flannel creado
clusterrolebinding.rbac.authorization.k8s.io/flannel creado
serviceaccount /
flannel creado configmap / kube-
flannel -cfg created daemonset aparece .apps / kube-flannel-ds-amd64 creado
daemonset.apps / kube-flannel-ds-arm64 creado
daemonset.apps / kube-flannel-ds-arm creado
daemonset.apps / kube-flannel-ds-ppc64le creado
daemonset.apps / kube-flannel-ds-s390x creado
Aquí, si instalas flannel , es posible que la imagen no se descargue, puedes descargarla manualmente:

Extraiga manualmente la imagen de la ventana acoplable de franela

docker pull easzlab / flannel: v0.11.0-amd64

Modifica el nombre de la imagen

etiqueta acoplable easzlab / flannel: v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

Eliminar la etiqueta de la imagen original

docker rmi easzlab / flannel: v0.11.0-amd64

Guardar y usar la configuración
kubeadm join

7. Verifique Node y
ejecute el siguiente comando para verificar Node
kubectl obtener nodos

Resultado de ejemplo

root@instance-wxxixh4k:~# kubectl get nodes
NAME                STATUS   ROLES    AGE     VERSION
instance-wxxixh4k   Ready    master   9m23s   v1.17.2

Muestra que ha tenido éxito y puede agregar y eliminar Node.

4 El cuarto paso es instalar el panel (se puede instalar sin presionar)

4.1 Descargar el archivo de configuración de yaml

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/alternative/kubernetes-dashboard.yaml

Utilice el comando cat kubernetes-dashboard.yaml para ver el contenido del archivo yaml y registrar el número de versión.
Hay declaraciones con el siguiente contenido en el archivo y el número que sigue es el número de versión.
imagen: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

Extraiga la imagen reflejada del panel de control de kubernetes (observe el número de revisión después).
docker pull registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
etiqueta de docker registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64: v1.10.1
docker rmi registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1

安装 kubernetes-dashboard
kubectl create -f kubernetes-dashboard.yaml

Ver el resultado de la instalación
kubectl get pod --namespace = kube-system

Configure el panel, agregue la cuenta de administrador y los permisos.
Copie y pegue el siguiente contenido en la terminal y presione Enter.
cat <dashboard-admin.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
sujetos:

  • kind: ServiceAccount
    nombre: kubernetes-dashboard
    namespace: kube-system
    EOF

El código anterior creará un archivo dashboard-admin.yaml.
Ejecute la instalación
kubectl create -f dashboard-admin.yaml

Ver puerto de nodo
kubectl get svc --namespace = kube-system

Busque el nodo llamado kubernetes-dashboard y registre el puerto.
Ver el nombre del pod
kubectl get pod --namespace = kube-system

Uno de ellos comienza con kubernetes-dashboard, como kubernetes-dashboard-6bf999dbcc-nc4hq, el nombre del registro.

4.2 Panel de acceso (tablero)

Si los siguientes métodos no están disponibles, consulte
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
Método 1: kubectl proxy
ejecutar
kubectl proxy

Intranet, puede utilizar la siguiente dirección para acceder a
http: // localhost: 8001 / api / v1 / namespaces / kube-system / services / https: kubernetes-dashboard: / proxy /
Método 2: Método de
acceso al servidor API
https: // {master -ip}: {apiserver-port} / api / v1 / namespaces / kube-system / services / https: kubernetes-dashboard: / proxy /
Esto no se repetirá aquí, consulte la información de red para obtener más detalles.
Método 3:
No se recomienda el puerto de exposición directa (NodePort) .
Ejecute
kubectl -n kube-system edit service kubernetes-dashboard

Busque el tipo: ClusterIP y cámbielo a tipo: NodePort.
Además, el puerto también se puede cambiar.
Consejo: Al
ingresar, primero use el teclado de flechas para moverse a la posición apropiada; para eliminar caracteres, use la tecla Eliminar;
luego presione la tecla Esc y presione la tecla i para ingresar a la edición;
presione la tecla Esc, presione Shift + q, y se le pedirá que ingrese el contenido. Ingrese wq! Para guardar y salir.
Ejecute kubectl -n kube-system get service kubernetes-dashboard para ver la asignación de puertos.
Por ejemplo
80: 31901 / TCP

El método de acceso es https: // {ip}: 31901
Método tres
kubectl port-forward kubernetes-dashboard-6bf999dbcc-nc4hq 8080: 80 --namespace = kube-system &

10. Agregar nodo para probar
kubectl crear implementación nginx --image = nginx
kubectl exponer implementación nginx --port = 8090 --type = NodePort

Puede acceder a Nginx accediendo a 8090 desde la red externa.

Supongo que te gusta

Origin blog.csdn.net/uucckk/article/details/105193431
Recomendado
Clasificación