Cómo instalar K8S en centos y Ubuntu
1 El primer paso es instalar Docker
- 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 - Actualizar paquete de software Actualice
los componentes de software del sistema a la última versión estable.
actualización apta - 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)
- 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:
-
编辑 / etc / sysconfig / kubelet, 添加 KUBELET_EXTRA_ARGS = "- fail-swap-on = false"
#cat / etc / sysconfig / kubelet
KUBELET_EXTRA_ARGS = "- fail-swap-on = false" -
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:
- [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.