Ubuntu安装Kubenetes+Kubesphere(1)

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Ubuntu安装Kubenetes+Kubesphere(1)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.创建虚拟机

主要步骤:

  1. 新建虚拟机
  2. 创建虚拟机名称
  3. 定义虚拟机地址
  4. 自定义内存大小
  5. 启动虚拟机内存
  6. 勾选镜像(ubuntu)
  7. 虚拟机完成
  8. 开启虚拟机,进行ubuntu系统配置
    • 分配磁盘
    • 定义用户名()

 

2.配置系统设置

2.1配置root账号登录

设置管理员账号登录密码

subo passwd root

切换管理员账号

su

配置ssh文件

vim /etc/ssh/sshd_config
按i是开启编辑模式
找到内容PermitRootLogin without-password 修改为PermitRootLogin yes
ESC键退出编辑模式
:wq(保存并退出编辑)
ip addr (查询IP地址)
使用ip地址链接FinalShell

重启ssh文件

service ssh restart

 

2.2设置ubuntu20.04,设置静态IP

参考: https://www.cnblogs.com/kehoudaanxianjie/p/13139636.html 

cd /etc/netplan/ (cd进入到下层文件, 找到netplan下面的文件夹)
  • 假设IP地址修改为192.168.1.100,子网掩码24位即255.255.255.0,网关设置为192.168.1.1,

DNS1:223.5.5.5,DNS2:223.6.6.6

network:
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.1.100/24]   
      optional: true
      gateway4: 192.168.1.1
      nameservers:
        addresses: [223.5.5.5,223.6.6.6]

version: 2

应用配置

sudo netplan apply

 

配置APT源

备份源
cp /etc/apt/sources.list sources.list.bak
 
编辑/etc/apt/sources.list
将其中的所有cn.archive.ubuntu.com替换为mirrors.aliyun.com
更新apt-get
apt-get update

3.安装Docker及依赖软件

 
安装docker 命令
curl -sSL https://get.daocloud.io/docker | sh
 
安装K8S依赖的软件
apt-get install -y conntrack socat ebtables ipset 
 
配置阿里云镜像加速器
登录阿里云>控制台>镜像工具>镜像加速器 找到对应操作系统命令并在服务器中执行
如Ubuntu:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://chn4ef4v.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 

3.1配置无密码SSH登录

1. 通过运行以下命令在 server1 上创建密钥。直接按回车键跳过所有提示。

ssh-keygen
一直按回车到命令结束   

2. 将密钥复制到所有 GlusterFS 节点.

ssh-copy-id root@node1

ssh-copy-id root@node2

ssh-copy-id root@node3

3. 请验证您可以从 server1 通过无密码登录访问所有服务器机器。

ssh root@node1

ssh root@node2

ssh root@node3
如果不需要输入密码则配置成功,每次链接成功后需要使用exit命令退回原服务器
 
在所有服务器机器上安装 GlusterFS

1. 运行以下命令在 所有 上安装 software-properties-common。

apt-get install software-properties-common -y

2. 添加社区 GlusterFS PPA。

add-apt-repository ppa:gluster/glusterfs-7

3. 请确保使用的是最新安装包。

apt-get update

4. 安装 GlusterFS 服务器。

apt-get install glusterfs-server -y

5. 请确保也在 node2 和 node3 上运行上述命令,并在所有机器上验证安装包版本。

glusterfs -V

 

加载内核模块

1. 运行以下命令在 node1 上加载三个必要的内核模块。

echo dm_thin_pool | sudo tee -a /etc/modules

echo dm_snapshot | sudo tee -a /etc/modules

echo dm_mirror | sudo tee -a /etc/modules

2. 安装 thin-provisioning-tools。

apt-get -y install thin-provisioning-tools

3. 请确保您也在 node2 和 node3 上运行以上命令。

iptables -I INPUT -p all -s '192.168.1.103' -j ACCEPT
iptables -I INPUT -p all -s '192.168.1.104' -j ACCEPT
iptables -I INPUT -p all -s '192.168.1.105' -j ACCEPT
 
启动glusterfs 
service glusterd start
 
设置glusterfs自启动
systemctl enable glusterd

 

创建 GlusterFS 集群

1. 在 server1 上运行以下命令添加其他节点并创建集群。

gluster peer probe node2

gluster peer probe node3

2. 请验证集群中的所有节点均已成功连接。

gluster peer status
 
预计输出如下:
Number of Peers: 2
Hostname: node2
Uuid: e1192d6a-b65e-4ce8-804c-72d9425211a6
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: 9bd733e4-96d4-49d5-8958-6c947a2b4fa6
State: Peer in Cluster (Connected)

 

安装 Heketi
 
在https://github.com/heketi/heketi/releases/中找到heketi最新版服务端版本并下载,例如
https://github.com/heketi/heketi/releases/download/v10.4.0/heketi-v10.4.0-release-10.linux.amd64.tar.gz

 

将该文件上传到node1
 
解压缩改文件
tar zxvf heketi-v10.4.0-release-10.linux.amd64.tar.gz

 

cd heketi

 

cp heketi /usr/bin

 

cp heketi-cli /usr/bin

 

1. 创建 Heketi 服务文件。

vi /lib/systemd/system/heketi.service
写入以下内容
[Unit]
Description=Heketi Server
[Service]
Type=simple
WorkingDirectory=/var/lib/heketi
ExecStart=/usr/bin/heketi --config=/etc/heketi/heketi.json
Restart=on-failure
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target

 

2. 创建 Heketi 文件夹。

mkdir -p /var/lib/heketi

mkdir -p /etc/heketi

 

3.创建 JSON 文件以配置 Heketi。

vi /etc/heketi/heketi.json
写入以下内容
{
  "_port_comment": "Heketi Server Port Number",
  "port": "18080",
   
  "_use_auth": "Enable JWT authorization. Please enable for deployment",
  "use_auth": false,
   
  "_jwt": "Private keys for access",
  "jwt": {
    "_admin": "Admin has access to all APIs",
    "admin": {
      "key": "123456"
    },
    "_user": "User only has access to /volumes endpoint",
    "user": {
      "key": "123456"
    }
  },
   
  "_glusterfs_comment": "GlusterFS Configuration",
  "glusterfs": {
    "_executor_comment": [
      "Execute plugin. Possible choices: mock, ssh",
      "mock: This setting is used for testing and development.",
      "      It will not send commands to any node.",
      "ssh:  This setting will notify Heketi to ssh to the nodes.",
      "      It will need the values in sshexec to be configured.",
      "kubernetes: Communicate with GlusterFS containers over",
      "            Kubernetes exec api."
    ],
    "executor": "ssh",
   
    "_sshexec_comment": "SSH username and private key file information",
    "sshexec": {
      "keyfile": "/root/.ssh/id_rsa",
      "user": "root"
    },
   
    "_kubeexec_comment": "Kubernetes configuration",
    "kubeexec": {
      "host" :"https://kubernetes.host:8443",
      "cert" : "/path/to/crt.file",
      "insecure": false,
      "user": "kubernetes username",
      "password": "password for kubernetes user",
      "namespace": "Kubernetes namespace",
      "fstab": "Optional: Specify fstab file on node.  Default is /etc/fstab"
    },
   
    "_db_comment": "Database file name",
    "db": "/var/lib/heketi/heketi.db",
    "brick_max_size_gb" : 1024,
 "brick_min_size_gb" : 1,
 "max_bricks_per_volume" : 33,
   
   
    "_loglevel_comment": [
      "Set log level. Choices are:",
      "  none, critical, error, warning, info, debug",
      "Default is warning"
    ],
    "loglevel" : "debug"
  }
}

 

1. 启动 Heketi。

systemctl start heketi

2. 检查 Heketi 的状态。

systemctl status heketi
设置自启动
systemctl enable heketi
 
GlusterFS需要一个空白盘做为存储磁盘
通过fdisk -l查看磁盘分配情况
fdisk -l
 
例如空白盘为/dev/sdb
为 Heketi 创建拓扑配置文件,该文件包含添加到 Heketi 的集群、节点和磁盘的信息。
vi /etc/heketi/topology.json
 
写入以下内容注意IP地址和磁盘分区按实际情况修改
{
    "clusters": [
       {
         "nodes": [
           {
             "node": {
               "hostnames": {
                 "manage": [
                   "192.168.1.103" 
                ],
                "storage": [
                  "192.168.1.103" 
                ]
              },
              "zone": 1
            },
            "devices": [
              "/dev/sdb" 
            ]
          },
          {
            "node": {
              "hostnames": {
                "manage": [
                  "192.168.1.104" 
                ],
                "storage": [
                  "192.168.1.104"
                ]
              },
              "zone": 1
            },
            "devices": [
              "/dev/sdb" 
            ]
          },
          {
             "node": {
               "hostnames": {
                 "manage": [
                   "192.168.1.105"
                ],
                "storage": [
                  "192.168.1.105"  
                ]
              },
              "zone": 1
            },
            "devices": [
              "/dev/sdb"
            ]
          }
        ]
      }
    ]
  }

 

加载 Heketi JSON 文件
export HEKETI_CLI_SERVER=http://localhost:18080
heketi-cli -s $HEKETI_CLI_SERVER --user admin --secret '123456' topology load --json=/etc/heketi/topology.json

 

预计输出:
Creating cluster ... ID: fc4a237cceaf33bc14ce9fdc2cf2e86c
        Allowing file volumes on cluster.
        Allowing block volumes on cluster.
        Creating node 192.168.1.103 ... ID: 6e1023d99c7c5a34fe21b90644809183
                Adding device /dev/sdb ... OK
        Creating node 192.168.1.104 ... ID: 0aad2a60a7f178226158d86c2d1a6805
                Adding device /dev/sdb ... OK
        Creating node 192.168.1.105 ... ID: 87576f0f26aa63c6e627e49d0bff1a46
                Adding device /dev/sdb ... OK
 
查看部署情况:
heketi-cli cluster info fc4a237cceaf33bc14ce9fdc2cf2e86c --user admin --secret '123456'

 

注意info中的ID和上一步输出的cluster ID一致
预计输出:
Cluster id: fc4a237cceaf33bc14ce9fdc2cf2e86c
Nodes:
0aad2a60a7f178226158d86c2d1a6805
6e1023d99c7c5a34fe21b90644809183
87576f0f26aa63c6e627e49d0bff1a46
Volumes:

Block: true

File: true

 

配置SC
编写sc.yml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: mysc
provisioner: kubernetes.io/glusterfs
reclaimPolicy: Retain
parameters:
  gidMax: "50000"
  gidMin: "40000"
  resturl: http://192.168.1.103:18080
  volumetype: replicate:3
  restauthenabled: "true"
  restuser: "admin"
  restuserkey: "123456"

 

执行该文件:
kubectl apply -f sc.yml

 

设置mysc为默认
kubectl patch storageclass mysc  -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

 

查看sc
kubectl get sc
 
安装Kubesphere
后面步骤参考官网:在 Kubernetes 上最小化安装 KubeSphere内容:
https://kubesphere.com.cn/docs/quick-start/minimal-kubesphere-on-k8s/

 

4. 使用Kubekey安装Kubenetes

 

参考: https://github.com/kubesphere/kubekey/blob/master/README_zh-CN.md 

具体步骤如下:

1. 在官网下载最新版Kubekey: https://github.com/kubesphere/kubekey/releases 

 2. 选择Linux AMD64的tar.gz包如下图:

 

Ubuntu安装Kubenetes+Kubesphere(1)

3.在node1中创建文件夹并将上一步下载的文件上传至该文件夹

# 创建K8S要下载文件的目录
 mkdir kubekey
  
 # 到k8s目录下
 cd kubekey

4.解压缩文件:

tar -zxvf kubekey-v1.2.0-linux-amd64.tar.gz

5.可删除kk文件外的其他文件

6.给kk文件授权:

chmod 777 ./kk

7.创建配置文件

./kk create config

8.依据实际情况修改配置文件

9.使用配置文件创建集群

./kk create cluster -f /root/kubekey/config-sample.yaml
                             如果报错就根据地址 复制链接到浏览器下载文件 ,并拖拽到当前文件夹

 

等待创建完成
 
查看节点状态:

 

kubectl get node

等待所有节点为Ready状态则Kubenetes安装成功

Ubuntu安装Kubenetes+Kubesphere(1)

 

 5.分布式文件系统

在安装Kubesphere前,需要部署分布式文件系统用于容器K8S持久化,并配置存储类型。这里选择Kubesphere官网推荐的Glusterfs
官方给出的安装步骤如下: https://kubesphere.com.cn/docs/reference/storage-system-installation/glusterfs-server/ 
 

 

 

 

 

脚本宝典总结

以上是脚本宝典为你收集整理的Ubuntu安装Kubenetes+Kubesphere(1)全部内容,希望文章能够帮你解决Ubuntu安装Kubenetes+Kubesphere(1)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: