KubeShpere部署(4.1.2)
KubeSphere 愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)的集成,支持云原生应用在多云与多集群的统一分发和运维管理。
既然已经选择要安装,必然已经知道了他的应用场景,本文以4.1.2为例来记录如何部署。
环境准备
机器准备
一般部署k8s必然是集群部署,这里准备了三台机器这里安装的是ubuntu-22.04-live-server版本,镜像从阿里云下载的。
配置要求
下面是官方的配置要求:
其他要求
其他要求可以参阅官网 ,这里没什么要配置的 。https://docs.kubesphere.com.cn/v4.2.0/03-installation-and-upgrade/01-preparations/01-supported-k8s/
机器初始化
安装之前要做一些时区同步,前置软件安装之类的 。
sudo无密码配置(非root用户安装)
如果使用非root用户安装,因为需要执行一些sudo的命令 ,所以需要sudo之后可以不用输入密码 。
cat <<EOF | sudo tee /etc/sudoers.d/long
Defaults:long !fqdn
Defaults:long !requiretty
long ALL=(ALL) NOPASSWD: ALL
EOF
配置主机名(可选)
如果对主机名有要求的话 ,这里可以做配置 ,至于网上说的hosts中配置域名之类的,kk会帮我们自动配置,这里不需要操作
sudo hostnamectl hostname ks-master-0
安装必备软件
sudo apt-get update
sudo apt-get install curl socat conntrack ebtables ipset ipvsadm
配置时间同步
时间同步在集群中是非常重要的一个步骤 ,这里使用ntp配置国内统一授时服务器。
sudo nano /etc/systemd/timesyncd.conf
编辑文件添加以下内容
NTP=ntp.aliyun.com ntp1.aliyun.com ntp.ntsc.ac.cn
生效配置
sudo systemctl restart systemd-timesyncd.service
sudo timedatectl set-ntp true
设置上海时区
sudo timedatectl set-timezone Asia/Shanghai
下载KubeKey
这里先说一下KubeKey是KubeShpere官方提供的轻量化安装软件,以下简称kk
#配置中国取,设置之后默认会从阿里云镜像仓库下载镜像依赖
export KKZONE=cn
#下载软件
curl -sfL https://get-kk.kubesphere.io | sh -
软件下载页可以从官网下载然后解压缩,目前仅使用3.x来安装截止目前最新版本是3.1.11
https://github.com/kubesphere/kubekey/releases/tag/v3.1.11
创建配置
./kk create config -f kubesphere-v3.4.0-k8s-1.33.4.yaml --with-kubernetes v1.33.4
#可选参数【指定ks版本,不指定则后续手动安装,4.1.2不需要指定】 --with-kubesphere v3.4.0
修改配置
这里配置比较简单 ,以下是全部配置 ,如果指定了ks版本为3.x则后面会有比较多的配置。
修改的点有以下几个:
spec.hosts指定所有的集群机器和其域名
roleGroups指定每个机器的角色
kubernetes.containerManager可以选择containerd和docker,k8s官方推荐使用containerd.因为其更轻量一些。
controlPlaneEndpoint.internalLoadbalancer放开即可默认配置。
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: k8s-master, address: 192.168.3.80, internalAddress: 192.168.3.80, user: long, password: "123456"}
- {name: k8s-node1, address: 192.168.3.81, internalAddress: 192.168.3.81, user: long, password: "123456"}
- {name: k8s-node2, address: 192.168.3.82, internalAddress: 192.168.3.82, user: long, password: "123456"}
roleGroups:
etcd:
- k8s-master
control-plane:
- k8s-master
worker:
- k8s-master
- k8s-node1
- k8s-node2
controlPlaneEndpoint:
## Internal loadbalancer for apiservers
internalLoadbalancer: haproxy
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.33.4
clusterName: cluster.local
autoRenewCerts: true
containerManager: containerd
etcd:
type: kubekey
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
multusCNI:
enabled: false
registry:
privateRegistry: ""
namespaceOverride: ""
registryMirrors: []
insecureRegistries: []
addons: []
初始化系统
这一步会检查安装前的依赖 ,如果有什么需要安装的 ,日志中会告诉。
./kk init os -f kubesphere-v3.4.0-k8s-1.33.4.yaml
创建集群
执行命令开始创建集群
./kk create cluster -f kubesphere-v3.4.0-k8s-1.33.4.yaml --debug
4.x的版本安装比较快 ,安装完成后需要自己手动安装ks-core组件 。
安装ks-core
官方给的命令,但是发现包是下载不下来的
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-1.1.3.tgz --debug --wait
所以这里使用离线的tgz包。
helm upgrade --install ks-core /tmp/ks-core-1.1.3.tgz \
-n kubesphere-system --create-namespace \
--set hostClusterName=opslab-main \
--set ha.enabled=true \
--set redisHA.enabled=true \
--wait --timeout 15m \
--debug
查看安装结果
可以查看pod和服务的状态来看应用是否启动
kubectl get pod -A
kubectl describe pod [name] -n [namespace]
主要查看以下应用状态
访问页面
安装完成后访问页面http://192.168.3.80:30880/
,输入用户名密码即可进入:admin / P@88w0rd
然后就可以在扩展中心中进行各种可插拔组件的安装。
以下是组件清单
常见问题
内核不支持,使用uname -r查看内核版本,需要升级到5.x版本
etcd安装失败,导致连接不上2379端口。
修改ETCD_INITIAL_CLUSTER_STATE为new
# etcd有问题
/etc/systemd/system/etcd.service
将existing改为new
ETCD_INITIAL_CLUSTER_STATE=existing