首页 > 其他分享 >kuberentes安装

kuberentes安装

时间:2024-02-04 15:58:15浏览次数:33  
标签:kubernetes -- kuberentes 192.168 master docker 安装 节点

Sealos安装集群

下载Sealos

# 推荐下载最新版,会修复一些BUG,下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可, release页面也可下载
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos && \
    chmod +x sealos && mv sealos /usr/bin

下载Kube安装包

# 下载离线资源包 1.18.0
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/7b6af025d4884fdd5cd51a674994359c-1.18.0/kube1.18.0.tar.gz
# 下载离线资源包 1.16.0
wget https://sealyun.oss-cn-beijing.aliyuncs.com/37374d999dbadb788ef0461844a70151-1.16.0/kube1.16.0.tar.gz
# 下载离线资源包 1.15.0
wget -C https://sealyun.oss-cn-beijing.aliyuncs.com/free/kube1.15.0.tar.gz
# 下载离线资源包 1.14.1
wget -C https://github.com/sealstore/cloud-kernel/releases/download/offline/kube1.14.1.tar.gz

执行初始化命令

sealos init --user root --passwd root \
	--master 192.168.0.2  --master 192.168.0.3  --master 192.168.0.4  \
	--node 192.168.0.5 \
	--pkg-url /root/kube1.18.0.tar.gz \
	--version v1.18.0

Sealos参数

添加Master

sealos join --master 192.168.0.6 --master 192.168.0.7
sealos join --master 192.168.0.6-192.168.0.9  # 或者多个连续IP

删除Master

sealos clean --master 192.168.0.6 --master 192.168.0.7
sealos clean --master 192.168.0.6-192.168.0.9  # 或者多个连续IP

添加Node

sealos join --node 192.168.0.6 --node 192.168.0.7
sealos join --node 192.168.0.6-192.168.0.9  # 或者多个连续IP

删除Node

sealos clean --node 192.168.0.6 --node 192.168.0.7
sealos clean --node 192.168.0.6-192.168.0.9  # 或者多个连续IP

清理集群

sealos clean --all

安装应用

Sealos安装应用

参考

快速开始 | sealos | kubernetes安装

注意

  • 若安装过程中出错,则可执行清楚集群命令或者删除集群的所有主机命令进行重置,同时重启一下Master节点,虚拟IP才可清除。
  • 注意Docker的版本和Kubernetes版本对应,否则可能出现节点添加不上问题(出现过命名空间无法删除问题,重装版本对应的Docker消失)
  • 如果可以,采用root权限安装,否则可能出现权限不足现象

Rancher安装集群

1.创建集群

  • 添加集群

  • 选择自定义,然后填写创建的配置,点击下一步

  • 添加节点

2.安装 master

安装 master 节点,需要选择 Control

然后复制执行命令在相应的主机执行命令即可

3.安装 node

只需要选择 work

然后复制执行命令在相应的主机执行命令即可

4.笔记本合盖

需要设置合盖不影响,否则盒盖休眠就会影响该节点

5.主机名

若主机名重复,则可能导致无法做安装节点

若 k8s.master k8s.node 他主机名显示的都为 k8s 导致无法添加

脚本安装

服务器规划

服务器规划

修改hostname(所有节点)

  1. vi /etc/hosts
172.22.181.192 k8s-master01
172.22.181.194 k8s-master02
172.22.181.196 k8s-master03
172.22.181.190 k8s-node01
172.22.181.189 k8s-node02
  1. export APISERVER_NAME=apiserver.lb
  2. export APISERVER_IP=172.22.181.197
  3. export POD_SUBNET=10.100.0.1/16
  4. echo "${APISERVER_IP} ${APISERVER_NAME}" >> /etc/hosts

安装前检查(所有节点)

  1. 任意节点 centos 版本为 7.6 或 7.7
  2. 任意节点 CPU 内核数量大于等于 2,且内存大于等于 4G
  3. 任意节点 hostname 不是 localhost,且不包含下划线、小数点、大写字母
  4. 任意节点都有固定的内网 IP 地址
  5. 任意节点上 Kubelet使用的 IP 地址 可互通(无需 NAT 映射即可相互访问),且没有防火墙、安全组隔离
  6. 任意节点不会直接使用 docker run 或 docker-compose 运行容器

安装负载均衡(apiserver.lb)

  1. yum install haproxy
  2. vi /etc/haproxy/haproxy.cfg
  3. 修改配置文件,修改结果见附件haproxy.cfg
  4. systemctl restart haproxy && systemctl enable haproxy

安装 docker / kubelet(所有master、node节点)

  1. 上传install_kubelet.sh文件到用户目录(文件见附件)
  2. ./install_kubelet.sh

初始化第一个master节点(K8s-master01)

  1. export POD_SUBNET=10.100.0.1/16
  2. 上传init_master.sh文件到用户目录(文件见附件)
  3. ./install_ master.sh
  4. 执行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-krosRmSJ-1598678647504)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4749b708-6f7b-4294-af6b-42fcf85f6317/image1.png)]

  1. 执行红框部分。
  2. 复制绿框部分与黄框部分。
  3. 查看pod运行状态

watch kubectl get pod -n kube-system -o wide

  1. 查看节点初始化结果

kubectl get nodes

  1. 请等到所有容器组(9个)全部处于 Running 状态,才进行下一步

初始化第二、三个master节点(K8s-master02、K8s-master03)

  1. 执行绿框复制内容。
  2. 检查初始化结果

kubectl get nodes

初始化 worker节点(K8s-node01、K8s-node02)

  1. 执行黄框复制内容。
  2. 检查初始化结果

kubectl get nodes

移除worker节点

  1. kubeadm reset
  2. kubectl delete node k8s-nodexx(节点名称)

安装Kubernetes Dashboard(K8s-master01)

  1. 执行以下命令安装

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml

  1. 上传auth.yaml到用户目录(文件见附件)
  2. 执行以下命令创建ServiceAccount 和 ClusterRoleBinding

kubectl apply -f ./auth.yaml

  1. 生成证书

    1. grep 'client-certificate-data' /etc/kubernetes/admin.conf | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
    2. grep 'client-key-data' /etc/kubernetes/admin.conf | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key
    3. openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"
  2. 将kubecfg.p12证书下载到本地

  3. 获取token

kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

  1. 将证书导入chrome浏览器
  2. 访问https://172.22.181.192:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
  3. 输入token登录。

问题排查

  1. Calico镜像无法拉取,可手工拉取

docker pull calico/kube-controllers:v3.9.2

  1. 节点无法正常启动,可查看日志信息进行排查

journalctl -f -u kubelet

附件

auth.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

haproxy.cfg

global
 
    log         127.0.0.1 local2
 
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
 
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
 
defaults
    mode                    tcp           # 修改默认为四层代理
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
frontend  main 172.22.181.197:6443
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js
 
    default_backend             k8s-master
 
backend k8s-master
    mode        tcp             # 修改为tcp
    balance     roundrobin
    server  k8s-master01  172.22.181.192:6443 check     # 三个master主机
    server  k8s-master02  172.22.181.194:6443 check
    server  k8s-master03  172.22.181.196:6443 check

init_master.sh

#!/bin/bash

# 只在 master 节点执行

# 脚本出错时终止执行
set -e

if [ ${#POD_SUBNET} -eq 0 ] || [ ${#APISERVER_NAME} -eq 0 ]; then
  echo -e "\033[31;1m请确保您已经设置了环境变量 POD_SUBNET 和 APISERVER_NAME \033[0m"
  echo 当前POD_SUBNET=$POD_SUBNET
  echo 当前APISERVER_NAME=$APISERVER_NAME
  exit 1
fi

# 查看完整配置选项 https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2
rm -f ./kubeadm-config.yaml
cat <<EOF > ./kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.2
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
controlPlaneEndpoint: "${APISERVER_NAME}:6443"
networking:
  serviceSubnet: "10.96.0.0/16"
  podSubnet: "${POD_SUBNET}"
  dnsDomain: "cluster.local"
EOF

# kubeadm init
# 根据您服务器网速的情况,您需要等候 3 - 10 分钟
kubeadm init --config=kubeadm-config.yaml --upload-certs

# 配置 kubectl
rm -rf /root/.kube/
mkdir /root/.kube/
cp -i /etc/kubernetes/admin.conf /root/.kube/config

# 安装 calico 网络插件
# 参考文档 https://docs.projectcalico.org/v3.9/getting-started/kubernetes/
rm -f calico-3.9.2.yaml
wget https://kuboard.cn/install-script/calico/calico-3.9.2.yaml
sed -i "s#192\.168\.0\.0/16#${POD_SUBNET}#" calico-3.9.2.yaml
kubectl apply -f calico-3.9.2.yaml

install_kubelet.sh

#!/bin/bash

# 在 master 节点和 worker 节点都要执行

# 安装 docker
# 参考文档如下
# https://docs.docker.com/install/linux/docker-ce/centos/ 
# https://docs.docker.com/install/linux/linux-postinstall/

# 卸载旧版本
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

# 设置 yum repository
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装并启动 docker
yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
systemctl enable docker
systemctl start docker

# 安装 nfs-utils
# 必须先安装 nfs-utils 才能挂载 nfs 网络存储
yum install -y nfs-utils
yum install -y wget

# 关闭 防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭 SeLinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

# 关闭 swap
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab

# 修改 /etc/sysctl.conf
# 如果有配置,则修改
sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf
# 可能没有,追加
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
# 执行命令以应用
sysctl -p

# 配置K8S的yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 卸载旧版本
yum remove -y kubelet kubeadm kubectl

# 安装kubelet、kubeadm、kubectl
yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2

# 修改docker Cgroup Driver为systemd
# # 将/usr/lib/systemd/system/docker.service文件中的这一行 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# # 修改为 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd
# 如果不修改,在添加 worker 节点时可能会碰到如下错误
# [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". 
# Please follow the guide at https://kubernetes.io/docs/setup/cri/
sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service

# 设置 docker 镜像,提高 docker 镜像下载速度和稳定性
# 如果您访问 https://hub.docker.io 速度非常稳定,亦可以跳过这个步骤
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

# 重启 docker,并启动 kubelet
systemctl daemon-reload
systemctl restart docker
systemctl enable kubelet && systemctl start kubelet

docker version

标签:kubernetes,--,kuberentes,192.168,master,docker,安装,节点
From: https://www.cnblogs.com/jiuxialb/p/18006390/kuberentes-an-zhuang

相关文章

  • NVIDIA显卡驱动NVIDIA-Linux-x86_64-545.29.02 安装错误分析之一
    software/NVIDIA-Linux-x86_64-545.29.02/kernel-open/nvidia/libspdm_shash.c:在函数‘lkca_hmac_duplicate’中:/software/NVIDIA-Linux-x86_64-545.29.02/kernel-open/nvidia/libspdm_shash.c:90:26:错误:implicitdeclarationoffunction‘crypto_tfm_ctx_aligned’;didy......
  • 安装dotnet下的诊断工具
    1.安装dotnet下的三个诊断工具dotnet-counters一个性能监视工具,用于临时运行状况监视和初级性能调查,你可以通过命令查看和存储,当前程序的运行时信息,它可以收集CPU,内存,GC,线程,异常等信息dotnet-trace一个跨平台的.NETCore工具,在不使用本机探查器的情况下启用正在运行的进......
  • Linux---软件安装(二)
    1、软件安装方式二进制发布包安装软件已经针对具体平台编译打包发布,只要解压,修改配置即可rpm安装软件已经按照redhat(红帽)的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题yum安装一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动......
  • 解决apache-tomcat安装成功之后运行startup.bat之后闪退
    一:概述通过startup.bat启动的流程是:startup->catalia->setclasspath->cataline,如果这3个bat文件里面有一个出现错误的话就是启动失败,为了找到一闪而过的原因,需要了解这三个bat文件里面是什么。二:具体说明<1>由于JDK环境变量配置错误tomcat在启动时,会读取环境变量的信息,需要一个CAT......
  • Charles安装及配置
    注:本文只介绍Charles的安装和PC端抓包,手机端抓包大同小异。一、下载安装Charles1、官方网址:https://www.charlesproxy.com/   选择自己需要的macos/windows/linux下对应的最新版本,选择安装盘符,安装即可如果网络不好也可以直接下载:windows:charles-proxy-4.6.5-win64-onkj.msimac......
  • 卸载centos源码安装的mysql
    关闭mysql查看安装的mysqlrpm-qa|grep-imysql卸载安装的mysqlrpm-evmysql-community-client-8.0.11-1.el7.x86_64--nodeps--nodeps强制卸载删除mysql相关目录whereismysqlfind/-namemysqlrm-rf目录rm命令文件一旦通过rm命令删除,则无法恢复;删除文件......
  • MySQL8.0.26安装部署
    一.安装1.下载安装包文件官网地址:https://www.mysql.com/下载地址:https://downloads.mysql.com/archives/installer/(注意:如果之前已经安装MySQL,需要卸载旧版MySQL,然后再安装此版本,卸载请参考我的“MySQL8.0.26卸载”文档)下载好安装包后,双击安装包,根据提示进行安装2.根据......
  • Docker安装mysql8
    1.下载mysql8镜像(版本根据自己选择:这里是8.0.20)dockerpullmysql:8.0.20 2.启动镜像dockerrun-p3307:3306--namemysql8-eMYSQL_ROOT_PASSWORD=123456-dmysql:8.0.20 参数注解 检查是否启动成功dockerps 3.配置挂载创建挂载目录(请检查保证创建成......
  • GBase 8a 单机版安装教程
    GBase8a单机免费版安装。本文采用官方免费版本GBase8a-NoLicense-Free-8.6.2_build43-R7-redhat7.3-x86_64.tar.bz2为例,介绍单机版安装步骤。安装包下载地址https://pan.baidu.com/s/1HPVMoZWMpRrIsWvatswUGw如需提取码:[打开微信]->[扫描下方二维码]->[关注数据与人]回复”gbase......
  • Docker笔记(一)docker 在linux里面的安装
    Docker笔记(一)docker在linux里面的安装为什么使用docker(docker理念)在开发环境,将源码+配置+软件等其他项目运行的所有的东西,都打包,直接都给运维,这样运维就不需要自己搭建项目运行的环境了,因为你已经拿到了开发人员本地的全部的东西,相当于拿到开发人员全部的东西,直接在运维那里就......