0
点赞
收藏
分享

微信扫一扫

第四十三节 k0s 集群部署与安装

第四十三节   k0s 集群部署与安装_初始化

【实验环境】
rockylinxu 8.10
实验机器三台
192.168.80.31 lyc-80-31  master
192.168.80.32 lyc-80-32  worker
192.168.80.33 lyc-80-33  worker
系统初始化,系统关闭selinux/关闭firewalld清空iptables防火墙规则

k0s很适合用于新版本的测试使用,很方便进行集群的搭建和测试

一、k0s介绍

k0s 是一个开源、包罗万象的 Kubernetes 发行版,它配置了构建 Kubernetes集群所需的所有功能。
由于其简单的设计、灵活的部署选项和适度的系统要求。
    1.任何云
    2.裸机
    3.边缘和物联网
    
k0s 大大降低了安装和运行 CNCF 认证的 Kubernetes 发行版的复杂性。
借助 k0s,新集群可以在几分钟内启动,开发人员的阻力降至零。
这使得任何没有特殊技能或 Kubernetes 专业知识的人都可以轻松上手。

k0s 作为单个二进制文件分发,除了主机操作系统内核之外,与主机操作系统的依赖性为零。

它适用于任何 Linux,无需额外的软件包或配置。
任何安全或性能问题都可以直接在 k0s 发行版中修复。
这使得保持集群最新和安全变得非常简单。

官方文档地址
https://docs.k0sproject.io/v1.30.0+k0s.0/

系统部署要求
https://docs.k0sproject.io/v1.30.0+k0s.0/system-requirements/

第四十三节   k0s 集群部署与安装_ide_02

第四十三节   k0s 集群部署与安装_ide_03

二、下载并配置运行环境

1、下载k0s安装包

下载k0s文件
wget https://github.com/k0sproject/k0s/releases/download/v1.31.2%2Bk0s.0/k0s-v1.31.2+k0s.0-amd64

下载k0sctl文件
wget https://github.com/k0sproject/k0sctl/releases/download/v0.19.2/k0sctl-linux-amd64

第四十三节   k0s 集群部署与安装_linux_04

2、配置运行环境并验证版本

chmod +x  k0s-v1.31.2+k0s.0-amd64
chmod +x  k0sctl-linux-amd64

mv k0sctl-linux-amd64 /usr/local/bin/k0sctl
mv k0s-v1.31.2+k0s.0-amd64 /usr/local/bin/k0s

k0sctl version
k0s version

第四十三节   k0s 集群部署与安装_初始化_05

三、单机部署

3.1下载k0s文件

下载k0s文件
wget https://github.com/k0sproject/k0s/releases/download/v1.31.2%2Bk0s.0/k0s-v1.31.2+k0s.0-amd64

chmod +x k0s-v1.31.2+k0s.0-amd64
mv k0s-v1.31.2+k0s.0-amd64  /usr/bin/k0s

k0s version

第四十三节   k0s 集群部署与安装_linux_06

3.2安装并启动k0s

k0s install controller --single

sudo systemctl daemon-reload

sudo k0s start
systemctl start k0scontroller.service
systemctl status k0scontroller.service

3.3服务开启代理

#开启魔法,增加代理
vim /etc/systemd/system/k0scontroller.service
----
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,k0s"
----
systemctl daemon-reload
systemctl restart k0scontroller.service

第四十三节   k0s 集群部署与安装_linux_07

第四十三节   k0s 集群部署与安装_linux_08

3.4查看集群状态

查看集群
k0s kubectl get node
k0s kubectl get pod -A
k0s kubectl get pod -n kube-system
k0s kubectl get svc
k0s kubectl get ns
k0s kubectl get node -o wide

ps -ef |grep containerd

第四十三节   k0s 集群部署与安装_linux_09

四、k0s集群部署【3台】

【实验环境】
rockylinxu 8.10
实验机器三台
192.168.80.31 lyc-80-31  master
192.168.80.32 lyc-80-32  worker
192.168.80.33 lyc-80-33  worker
系统初始化,系统关闭selinux/关闭firewalld清空iptables防火墙规则

4.0 k0s 的部署工具介绍

k0sctl是一个用于引导和管理 kes集群的命令行工具。
k0sctl使用SSH连接到提供的主机并收集主机信息,通过配置主机、部署k0s,
然后将 k0s节点连接在一起来形成集群。

使用 k0sctl,您可以以自动且易于重复的方式创建多节点集群。
建议将此方法用于生产集群安装。

第四十三节   k0s 集群部署与安装_初始化_10

4.1配置运行环境并验证版本

chmod +x  k0s-v1.31.2+k0s.0-amd64
chmod +x  k0sctl-linux-amd64

mv k0sctl-linux-amd64 /usr/local/bin/k0sctl    #注意不能放在/usr/bin目录,不然后续会报错
mv k0s-v1.31.2+k0s.0-amd64 /usr/local/bin/k0s  #注意不能放在/usr/bin目录,不然后续会报错

k0sctl version
k0s version

第四十三节   k0s 集群部署与安装_ide_11

第四十三节   k0s 集群部署与安装_ide_12

第四十三节   k0s 集群部署与安装_linux_13

4.2查看集群需要的镜像

k0s airgap list-images
---
quay.io/k0sproject/calico-cni:v3.28.2-0
quay.io/k0sproject/calico-kube-controllers:v3.28.2-0
quay.io/k0sproject/calico-node:v3.28.2-0
quay.io/k0sproject/coredns:1.11.3
quay.io/k0sproject/apiserver-network-proxy-agent:v0.30.3
quay.io/k0sproject/kube-proxy:v1.31.2
quay.io/k0sproject/kube-router:v2.2.1-iptables1.8.9-0
quay.io/k0sproject/cni-node:1.3.0-k0s.0
registry.k8s.io/metrics-server/metrics-server:v0.7.2
registry.k8s.io/pause:3.9

第四十三节   k0s 集群部署与安装_linux_14

4.3生成配置文件【31】

k0sctl init > k0sctl.yaml
vim k0sctl.yaml
---
apiVersion: k0sctl.k0sproject.io/v1beta1
kind: Cluster
metadata:
  name: k0s-cluster
spec:
  hosts:
  - ssh:
      address: 192.168.80.71
      user: root
      port: 22
      keyPath: ~/.ssh/id_rsa
    role: controller
  - ssh:
      address: 192.168.80.72
      user: root
      port: 22
      keyPath: ~/.ssh/id_rsa
    role: worker
  - ssh:
      address: 192.168.80.73
      user: root
      port: 22
      keyPath: ~/.ssh/id_rsa
    role: worker
---

第四十三节   k0s 集群部署与安装_ide_15

第四十三节   k0s 集群部署与安装_ide_16

4.4执行第一次安装

# 此时还未开启魔法,未开代理
#执行安装命令
k0sctl apply --config k0sctl.yaml

第四十三节   k0s 集群部署与安装_linux_17

第四十三节   k0s 集群部署与安装_初始化_18

# 查看报错日志
cat /root/.cache/k0sctl/k0sctl.log

# 下图是日志报错提示

第四十三节   k0s 集群部署与安装_linux_19

查看集群pod状态
k0s kubectl get node
k0s kubectl get pod -n kube-system
k0s kubectl get pod -n kube-system -o wide

第四十三节   k0s 集群部署与安装_初始化_20

查看pod后台运行日志
k0s kubectl describe pod -n kube-system
# 可以看到是镜像拉取失败的原因,所以需要开启魔法、开启代理

第四十三节   k0s 集群部署与安装_ide_21

4.5开启魔法、开启代理

3台机器全部需要开启魔法,开启代理


# 1台master节点添加代理
vim /etc/systemd/system/k0scontroller.service
----
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,k0s"
----
sudo systemctl daemon-reload
service k0scontroller.service restart



# 2台worker节点添加代理
vim  /etc/systemd/system/k0sworker.service
--------
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,k0s"
-------
#注意worker节点,每次重新初始化机器,代理信息会自动覆盖消失
sudo systemctl daemon-reload
service k0sworker.service restart

第四十三节   k0s 集群部署与安装_初始化_22

4.6再次进行初始化

查看集群pod状态,如果状态正常,就不用再次初始化
k0s kubectl get pod -A

如果超过3分钟集群状态还异常,我们可以再次执行初始化命令
k0sctl apply --config k0sctl.yaml

第四十三节   k0s 集群部署与安装_linux_23

查看集群状态
k0s kubectl get node

k0s kubectl get node -o wide
主节点不参与调度的时候是不显示的状态,所以不会显示

第四十三节   k0s 集群部署与安装_初始化_24

查看pod在节点分布
k0s kubectl get pod -n kube-system -o wide

第四十三节   k0s 集群部署与安装_初始化_25

4.7如何将K0s去掉

(1)查找上下文文件

查看集群组件
ps -ef |grep kube
#可以看到71主节点的组件是齐全的 说明集群没有问题

第四十三节   k0s 集群部署与安装_linux_26

ps -ef |grep k0s
可以看到上下文文件位置  --config=/etc/k0s/k0s.yaml
那么这个到底是不是上下文文件呢,cat后发现,格式并不是上下文文件

第四十三节   k0s 集群部署与安装_初始化_27

(2)登录到一个k8s集群master节点拷贝kubectl文件

#切换到bin目录
cd /usr/bin
#查看需要的文件
ls -ld kubectl
#将文件复制到root目录
cp -ap kubectl /root
压缩kubectl文件
tar -czvf kubectl.tar.gz kubectl
将文件发送到k0s主机的root目录
scp  kubectl.tar.gz  lyc-80-31:/root

(3)测试拉取的kubectl文件有效性

【回到k0s集群中】
解压kubectl.tar.gz 
tar -zxvf kubectl.tar.gz
移动kubectl到系统bin目录
mv kubectl /usr/local/bin

测试
kubectl get node
# 出现图中的报错,只有两个可能
1、找不到集群的上下文文件
2、api-server出错或缺失

这里我们的主节点api-server是正常的,那么就是缺失了上下文文件的问题

第四十三节   k0s 集群部署与安装_ide_28

(4)生成上下文文件

cd  /root
生成上下文文件 k0sctl kubeconfig > kubeconfig

查看生成的上下文文件cat kubeconfig

移动kubeconfig到 /root/.kube/
mkdir /root/.kube/
cd /root/.kube/
mv /root/kubeconfig   ./

必须将kubeconfig改成config名字
mv kubeconfig config

第四十三节   k0s 集群部署与安装_linux_29

(5)验证上下文文件的有效性

#查看pod
kubectl get pod -A
kubectl get pod -n kube-system
kubectl get pod -n kube-system -o wide

#查看node
kubectl get node
kubectl get node -A
kubectl get node -o wide

此时我们发现,之前执行命令需要将k0s加上,现在不用加也可以正常执行k8s命令

第四十三节   k0s 集群部署与安装_ide_30

第四十三节   k0s 集群部署与安装_linux_31

kubectl get node -A
这里我们会发现,不显示master节点31,
这是因为k0s集群master节点没有Kube-proxy和kubelet,后续安装nginx会得到验证

第四十三节   k0s 集群部署与安装_初始化_32

五、集群测试

5.1安装metrics、dashboard及nginx

#安装dashboard
kubectl apply -f recommended.yaml
kubectl apply -f dashboard-user.yaml
kubectl -n kubernetes-dashboard create token admin-user

#生成token如下
eyJhbGciOiJSUzI1NiIsImtpZCI6InZkRmhiR2RTbGlYRHRmOGN5RkpieXNzT1RxeGJBT2luU2lGbGlVVllKZE0ifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjIiwic3lzdGVtOmtvbm5lY3Rpdml0eS1zZXJ2ZXIiXSwiZXhwIjoxNzMxMDU4NjgxLCJpYXQiOjE3MzEwNTUwODEsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyIsImp0aSI6IjNlNGM2ZjJjLTEyYTUtNDZmZS1hYTgzLWVlNGEwNGVkODFjMCIsImt1YmVybmV0ZXMuaW8iOnsibmFtZXNwYWNlIjoia3ViZXJuZXRlcy1kYXNoYm9hcmQiLCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoiYWRtaW4tdXNlciIsInVpZCI6ImQ5ZDZkZWQ1LTY1NWMtNDlkMy04NDU3LWJlODQ3OTk1ZDc5NyJ9fSwibmJmIjoxNzMxMDU1MDgxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.i5BEZ_7yibZGpq4YnJd1dcn2TK_oggIl4CMH41AFzTzBa9WwMxjwrxwFZpgdCcYe3gAelolwbwVTwdrs0Yqa4QOFTmrad1nnm9hp-CnQzOBO8bV8FmU3y8UxWlJFfM3mFRzBm7_RgK3lSyccqGD4NXlu_z-pedQEFfTLJH-VfRfTnPwctXfj9qGB2bB1TdatDwMLUa_Ip3yCMfduEcuTAQK0teuT01V1097_tZISDzqYKGrEiGZW3BtX0PGGClCUW4uR7l4zOP_5QLYAFG2FTzgjcrPyYixX6iJWxejRdy-8l35yEUcsICgizSzsz1S7g6IcCkzgoPnykBQUfsGIyA

#安装nginx
kubectl apply -f nginx-web.yaml

第四十三节   k0s 集群部署与安装_ide_33

kubectl get pod -A

第四十三节   k0s 集群部署与安装_ide_34

#查看nginx端口
kubectl get pod -o wide
kubectl get pod,svc

访问http://192.168.80.32:31180/

第四十三节   k0s 集群部署与安装_linux_35

第四十三节   k0s 集群部署与安装_初始化_36

#查看dashboard端口
kubectl get pod -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard

访问 https://192.168.80.31:30001/  
我们是不能访问的,因为k0s集群master节点没有Kube-proxy和kubelet

只能访问worker节点

第四十三节   k0s 集群部署与安装_ide_37

第四十三节   k0s 集群部署与安装_ide_38

第四十三节   k0s 集群部署与安装_linux_39

第四十三节   k0s 集群部署与安装_ide_40

第四十三节   k0s 集群部署与安装_linux_41

kubectl get pod -A
kubectl get pod -o wide

第四十三节   k0s 集群部署与安装_ide_42

5.2安装helm、kubesphere

5.2.1安装helm

中文官网 Helm

第四十三节   k0s 集群部署与安装_ide_43

#在线安装
wget  https://get.helm.sh/helm-v3.5.3-linux-amd64.tar.gz
tar -zxvf  helm-v3.5.3-linux-amd64.tar.gz
cd linux-amd64
mv helm /usr/bin/

查看helm版本
helm  version
查看帮助
helm  --help

第四十三节   k0s 集群部署与安装_linux_44

5.2.2安装kubesphere

【kubesphere官网】
https://kubesphere.io/zh/docs/v4.1/02-quickstart/01-install-kubesphere/

执行安装命令
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-1.1.2.tgz --debug --wait --set global.imageRegistry=swr.cn-southwest-2.myhuaweicloud.com/ks --set extension.imageRegistry=swr.cn-southwest-2.myhuaweicloud.com/ks


查看k8s集群sc
kubectl get sc
kubectl get pod -A


登录web
http://192.168.80.32:30880
    Account: admin
    Password: P@88w0rd

第四十三节   k0s 集群部署与安装_ide_45

第四十三节   k0s 集群部署与安装_linux_46

第四十三节   k0s 集群部署与安装_初始化_47

第四十三节   k0s 集群部署与安装_linux_48

举报

相关推荐

0 条评论