KubeKey_v3.x安装K8s
安装说明
测试环境
该文档测试了[CentOS7.9,Rocky8.x,Rocky9.x]均可安装
集群信息
| IP | hostname | 节点类型 |
|---|---|---|
| 10.0.3.0 | master1 | master |
| 10.0.3.1 | master2 | master |
| 10.0.3.2 | master2 | master |
| 10.0.3.3 | node1 | node |
| 10.0.3.4 | node2 | node |
| 10.0.3.5 | node3 | node |
| 10.0.3.6 | nfs-server | file-server |
参考文档
安装
前置环境
# 安装依赖
# kk下载完成需要解压因此需要tar
# socat,conntrack必装
# ebtables,ipset,ipvsadm选装
# 也可使用离线安装,参考[Linux包安装]
# CentOS7.9
yum install -y tar socat conntrack ebtables ipset ipvsadm
# Rocky8.x,Rocky9.x
dnf install -y tar socat conntrack ebtables ipset ipvsadm
自定义存储插件(可选)
NFS
安装NFS服务
参考[NFS安装(CentOS,Rocky)]
离线搭建(推荐)
# 下载chart插件包
https://github.com/kubesphere/helm-charts
# 解压并在找到src/main目录下复制出nfs-client-provisioner文件夹,即nfs客户端的chart
# 修改nfs-client-provisioner/values.yaml
# 修改配置信息
vi nfs-client-provisioner/values.yaml
# 修改以下配置
image:
# 镜像地址,如需修改私有镜像地址改这里即可
repository: registry.cn-beijing.aliyuncs.com/kubesphereio/nfs-subdir-external-provisioner
tag: v4.0.2
pullPolicy: IfNotPresent
nfs:
# nfs服务器地址
server: "10.0.3.6"
# nfs存储目录
path: "/data1/nfs/data"
mountOptions:
storageClass:
# 是否为默认存储
defaultClass: true
# 将改插件目录上传至/data0目录下(目录和config-sample.yaml配置文件中path属性对应)
# 如:/data0/nfs-client-provisioner
# 集群配置config-sample.yaml添加该插件(后续步奏添加)
addons:
- name: nfs-client
namespace: kube-system
sources:
chart:
name: nfs-client-provisioner
## 删除NFS客户端chart插件跟目录,程序会根据path加name找到插件,即/data0/nfs-client-provisioner
path: /data0
在线搭建
默认配置即可
下载KubeKey
# 如果无法访问https://github.com,设置环境
export KKZONE=cn
# 在线下载
curl -sfL https://get-kk.kubesphere.io | sh -
# 指定版本
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.1.11 sh -
# github仓库下载
https://github.com/kubesphere/kubekey/releases
# 赋予执行权限
chmod +x kk
创建配置文件
# 查看KubeKey支持的Kubernetes版本列表
./kk version --show-supported-k8s
# Kubernetes版本说明
# kubernetes_v1.21.14支持边缘计算
# docker容器最高支持到kubernetes_v1.24,再高需要Container容器
# kk_v3.1.11
./kk create config --with-kubernetes v1.33.4
修改配置文件
# 配置文件说明
# https://github.com/kubesphere/kubekey/blob/master/docs/config-example.md
# 修改配置
vi config-sample.yaml
# hosts节点下下添加自己的主机
# {name: [主机名], address: [外网地址], internalAddress: [内网地址], user: [用户名], password: "[密码]"}
# roleGroups
# etcd节点对应主机,control-plane节点对应主机,worker节点对应主机(主机名均为hosts节点配置的)
# controlPlaneEndpoint
# 如果有多个control-plane需要设置[internalLoadbalancer: haproxy]
kk_v3.1.11 + k8s_v1.33.4
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: sample
spec:
## 节点信息
hosts:
- {name: master1, address: 10.0.3.0, internalAddress: 10.0.3.0, user: root, password: "root"}
- {name: master2, address: 10.0.3.1, internalAddress: 10.0.3.1, user: root, password: "root"}
- {name: master3, address: 10.0.3.2, internalAddress: 10.0.3.2, user: root, password: "root"}
- {name: node1, address: 10.0.3.3, internalAddress: 10.0.3.3, user: root, password: "root"}
- {name: node2, address: 10.0.3.4, internalAddress: 10.0.3.4, user: root, password: "root"}
- {name: node3, address: 10.0.3.5, internalAddress: 10.0.3.5, user: root, password: "root"}
roleGroups:
## etcd节点
etcd:
- master1
- master2
- master3
## 控制节点(master)
control-plane:
- master1
- master2
- master3
## 工作节点(node)
worker:
- node1
- node2
- node3
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: "registry.cn-beijing.aliyuncs.com"
namespaceOverride: "kubesphereio"
registryMirrors: []
insecureRegistries: []
## 可选插件
addons:
## nfs插件,参考上述[自定义存储插件]
- name: nfs-client
namespace: kube-system
sources:
chart:
name: nfs-client-provisioner
## 删除NFS客户端chart插件跟目录,程序会根据path加name找到插件,即/data0/nfs-client-provisioner
path: /data0
执行安装
# 启动安装程序
./kk create cluster -f config-sample.yaml
# 安装成功信息
Pipeline[CreateclusterPipeline] execute successfully
# 可使用以下命令查看k8s的pod安装情况(需要再安装程序执行完k8s初始化才能看到效果)
watch -n 1 kubectl get pod -A