Kubernetes/部署文档/KubeSphere/基于KubeKey部署高可用Kubernetes集群.md
offends 7a2f41e7d6
All checks were successful
continuous-integration/drone Build is passing
synchronization
2024-08-07 18:54:39 +08:00

226 lines
4.4 KiB
Markdown

> 本文作者:丁辉
# 基于KubeKey部署Kubernetes
| 节点名称 | IP | Kubernetes角色 |
| :----------------------: | :----------: | :-----------------------: |
| k8s-master-1,KubeKey管理 | 192.168.1.10 | control-plane,etcd,worker |
| k8s-master-2 | 192.168.1.20 | control-plane,etcd,worker |
| k8s-master-3 | 192.168.1.30 | control-plane,etcd,worker |
## 基础准备
[官方主页](https://kubesphere.io/zh/)
### 所有节点执行
1. 创建用户
```bash
useradd -m -s /bin/bash kubekey
```
2. 配置用户密码
> 根据自己的密码修改 "123456"
```bash
echo "kubekey:123456" | chpasswd
```
3. 配置 kubekey 免密使用 sudo 权限
```bash
cat <<EOF | sudo tee /etc/sudoers.d/kubekey
# User rules for kubekey
kubekey ALL=(ALL) NOPASSWD: ALL
EOF
```
4. 更改主机名
- 192.168.1.10
```bash
hostnamectl set-hostname k8s-master-1 && bash
```
- 192.168.1.20
```bash
hostnamectl set-hostname k8s-master-2 && bash
```
- 192.168.1.30
```bash
hostnamectl set-hostname k8s-master-3 && bash
```
5. 编辑 /etc/hosts 文件
```bash
vi /etc/hosts
```
添加如下内容
```bash
192.168.1.10 k8s-master-1
192.168.1.20 k8s-master-2
192.168.1.30 k8s-master-3
```
6. 安装依赖
- Centos
```bash
yum install conntrack-tools socat -y
```
- Ubuntu
```bash
apt install conntrack socat -y
```
### KubeKey管理节点执行
1. 切换用户
```bash
su - kubekey
```
2. 创建密钥
```bash
sudo ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa -q
```
3. 配置免密登录
```bash
sudo ssh-copy-id kubekey@192.168.1.10
sudo ssh-copy-id kubekey@192.168.1.20
sudo ssh-copy-id kubekey@192.168.1.30
```
## 开始安装 KubeKey
[KubeKey-Github-Releases](https://github.com/kubesphere/kubekey/releases)
### KubeKey管理节点执行
1. 下载最新版 KubeKey
> 配置国内加速
>
> ```bash
> export KKZONE=cn
> ```
```bash
curl -sfL https://get-kk.kubesphere.io | sh -
```
> 指定版本
>
> ```bash
> curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -
> ```
2. `kk` 添加可执行权限
```bash
sudo chmod +x kk
sudo mv kk /usr/local/bin/
```
3. 生成配置文件
```bash
kk create config -f kubesphere.yaml
```
> 安装 Kubesphere 指定参数
>
> [Kubesphere-Github-Releases](https://github.com/kubesphere/kubesphere/releases)
>
> ```bash
> --with-kubesphere v3.4.1
> ```
修改如下内容
```yaml
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: k8s-master-1, address: 192.168.100.10, internalAddress: 192.168.100.10, user: kubekey, password: "123456"}
- {name: k8s-master-2, address: 192.168.100.20, internalAddress: 192.168.100.20, user: kubekey, password: "123456"}
- {name: k8s-master-3, address: 192.168.100.30, internalAddress: 192.168.100.30, user: kubekey, password: "123456"}
roleGroups:
etcd:
- k8s-master-1
- k8s-master-2
- k8s-master-3
control-plane:
- k8s-master-1
- k8s-master-2
- k8s-master-3
worker:
- k8s-master-1
- k8s-master-2
- k8s-master-3
controlPlaneEndpoint:
# 启用内置的 HAProxy 负载均衡器
internalLoadbalancer: haproxy
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
# 指定 Kubernetes 版本, 可使用 kk version --show-supported-k8s 命令查询当前 KubeKey 支持的版本
version: v1.23.10
clusterName: cluster.local
autoRenewCerts: true
# 指定容器运行时
containerManager: docker
etcd:
type: kubekey
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
multusCNI:
enabled: false
registry:
privateRegistry: ""
namespaceOverride: ""
registryMirrors: []
insecureRegistries: []
addons: []
```
## 开始安装 Kubernetes
```bash
kk create cluster -f kubesphere.yaml -y
```
扩容节点
```bash
kk add nodes -f kubesphere.yaml -y
```
## 卸载集群
```bash
kk delete cluster -f kubesphere.yaml
```