更新记录
| 时间 | 内容 |
|---|---|
| 2024-05-29 | 初稿 |
软件版本
| soft | Version |
|---|---|
| OS | Ubuntu 20.04.6 LTS |
| Kubernetes | 1.28.9 |
| Kubespray | 2.25.0 |
一、配置免密
➜ ssh-copy-id -p 60802 root@172.31.229.166
➜ ssh-copy-id -p 60802 root@172.31.229.167
➜ ssh-copy-id -p 60802 root@172.31.229.152
➜ ssh-copy-id -p 60802 root@172.31.229.140
二、配置kubespray
①、clone kubespray
# 下载kubespray
➜ git clone https://github.com/kubernetes-sigs/kubespray.git
➜ cd kubespray
➜ git checkout v2.25.0
②、运行 kubespray容器
因为ansible还要安装一些依赖项, 这里可以不用那么麻烦, 直接用官方提供的安装好各种依赖的kubespray容器
# 运行kubespray容器
# 需要在clone至本地的kubespray git仓库中执行, 以挂载目录到容器中, 最后备份 inventory文件
➜ docker run --rm -it --mount type=bind,source="$(pwd)"/inventory/,dst=/inventory \
--mount type=bind,source="${HOME}"/.ssh/,dst=/root/.ssh/ \
quay.io/kubespray/kubespray:v2.25.0 bash
③、配置kubespray
# 以下命令在容器中执行
# 复制inventory模版
root@287a6fe551f6:/kubespray# cp -rfp inventory/sample inventory/pre-k8s
# 配置inventory.ini
root@287a6fe551f6:/kubespray# vim inventory/pre-k8s/inventory.ini
[all]
pre-k8s-master ansible_host=172.31.229.166 ansible_port=60802 etcd_member_name=preetcd1
pre-k8s-node01 ansible_host=172.31.229.167 ansible_port=60802
pre-k8s-node02 ansible_host=172.31.229.152 ansible_port=60802
pre-k8s-node03 ansible_host=172.31.229.140 ansible_port=60802
[kube_control_plane]
pre-k8s-master
[etcd]
pre-k8s-master
[kube_node]
pre-k8s-node01
pre-k8s-node02
pre-k8s-node03
[calico_rr]
[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr
# 配置mirror, 以在国内能拉取镜像
root@287a6fe551f6:/kubespray# cp inventory/pre-k8s/group_vars/all/offline.yml inventory/pre-k8s/group_vars/all/mirror.yml
root@287a6fe551f6:/kubespray# sed -i -E '/# .*\{\{ files_repo/s/^# //g' inventory/pre-k8s/group_vars/all/mirror.yml
tee -a inventory/pre-k8s/group_vars/all/mirror.yml <<EOF
gcr_image_repo: "gcr.m.daocloud.io"
kube_image_repo: "k8s.m.daocloud.io"
docker_image_repo: "docker.m.daocloud.io"
quay_image_repo: "quay.m.daocloud.io"
github_image_repo: "ghcr.m.daocloud.io"
files_repo: "https://files.m.daocloud.io"
EOF
# 配置k8s集群设置
root@287a6fe551f6:/kubespray# vim inventory/pre-k8s/group_vars/k8s_cluster/k8s-cluster.yml
## Change this to use another Kubernetes version, e.g. a current beta release
kube_version: v1.28.9
# Choose network plugin (cilium, calico, kube-ovn, weave or flannel. Use cni for generic cni plugin)
# Can also be set to 'cloud', which lets the cloud provider setup appropriate routing
kube_network_plugin: flannel
# Kubernetes internal network for services, unused block of space.
kube_service_addresses: 10.233.0.0/18
# internal network. When used, it will assign IP
# addresses from this range to individual pods.
# This network must be unused in your network infrastructure!
kube_pods_subnet: 10.233.64.0/18
## Container runtime
## docker for docker, crio for cri-o and containerd for containerd.
## Default: containerd
container_manager: containerd
# Additional container runtimes
kata_containers_enabled: false
# DNS configuration.
# Kubernetes cluster name, also will be used as DNS domain
cluster_name: pre-k8s
④、测试ansible配置
root@3f60dd0875ed:/kubespray# ansible -i inventory/pre-k8s/inventory.ini all -m ping
[WARNING]: Skipping callback plugin 'ara_default', unable to load
pre-k8s-node01 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
pre-k8s-master | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
pre-k8s-node03 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
pre-k8s-node02 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
三、安装k8s
①、使用kubespray安装k8s
# 在kubespray容器中运行
root@287a6fe551f6:/kubespray# ansible-playbook -i inventory/pre-k8s/inventory.ini --become --become-user=root cluster.yml
# 执行完 playbook 输出如下
PLAY RECAP ********************************************************************************************************************************************************************************************************************************************
pre-k8s-master : ok=547 changed=128 unreachable=0 failed=0 skipped=1029 rescued=0 ignored=3
pre-k8s-node01 : ok=397 changed=89 unreachable=0 failed=0 skipped=631 rescued=0 ignored=1
pre-k8s-node02 : ok=397 changed=89 unreachable=0 failed=0 skipped=627 rescued=0 ignored=1
pre-k8s-node03 : ok=397 changed=89 unreachable=0 failed=0 skipped=627 rescued=0 ignored=1
Wednesday 29 May 2024 06:07:05 +0000 (0:00:00.270) 0:09:45.908 *********
===============================================================================
kubernetes/preinstall : Install packages requirements ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 34.46s
kubernetes/control-plane : Kubeadm | Initialize first master ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 30.48s
kubernetes/kubeadm : Join to cluster ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 25.79s
kubernetes/preinstall : Update package management cache (APT) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 16.33s
download : Download_file | Download item ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 10.82s
container-engine/containerd : Download_file | Download item ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 10.73s
etcd : Reload etcd ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 9.64s
download : Download_file | Download item ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 9.42s
container-engine/crictl : Download_file | Download item ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 9.33s
container-engine/runc : Download_file | Download item ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 7.89s
container-engine/nerdctl : Download_file | Download item --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 7.42s
container-engine/crictl : Extract_file | Unpacking archive ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 6.14s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5.75s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5.58s
kubernetes-apps/ansible : Kubernetes Apps | Start Resources ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 5.46s
container-engine/nerdctl : Extract_file | Unpacking archive ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 5.36s
etcd : Configure | Check if etcd cluster is healthy -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5.24s
kubernetes-apps/network_plugin/flannel : Flannel | Wait for flannel subnet.env file presence --------------------------------------------------------------------------------------------------------------------------------------------------- 5.22s
container-engine/containerd : Containerd | Unpack containerd archive --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4.96s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4.89s
②、检查k8s状态
# 查看节点
➜ kubectl get nodes
NAME STATUS ROLES AGE VERSION
pre-k8s-master Ready control-plane 2m27s v1.28.9
pre-k8s-node01 Ready <none> 101s v1.28.9
pre-k8s-node02 Ready <none> 101s v1.28.9
pre-k8s-node03 Ready <none> 101s v1.28.9
# 查看kube-system名称空间下的pod
➜ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-88df9b457-28w4w 1/1 Running 0 56s
coredns-88df9b457-76fts 1/1 Running 0 61s
dns-autoscaler-74775b6655-pfvgx 1/1 Running 0 57s
kube-apiserver-pre-k8s-master 1/1 Running 1 2m27s
kube-controller-manager-pre-k8s-master 1/1 Running 2 2m25s
kube-flannel-78hc6 1/1 Running 0 77s
kube-flannel-bs64x 1/1 Running 0 77s
kube-flannel-r2x5t 1/1 Running 0 77s
kube-flannel-wbblz 1/1 Running 0 77s
kube-proxy-8cbrf 1/1 Running 0 100s
kube-proxy-9b67k 1/1 Running 0 100s
kube-proxy-hmzn6 1/1 Running 0 100s
kube-proxy-r6lfl 1/1 Running 0 100s
kube-scheduler-pre-k8s-master 1/1 Running 1 2m26s
nginx-proxy-pre-k8s-node01 1/1 Running 0 97s
nginx-proxy-pre-k8s-node02 1/1 Running 0 96s
nginx-proxy-pre-k8s-node03 1/1 Running 0 94s
nodelocaldns-7ldsc 1/1 Running 0 57s
nodelocaldns-7x76l 1/1 Running 0 57s
nodelocaldns-jn67x 1/1 Running 0 57s
nodelocaldns-jq644 1/1 Running 0 57s
四、备份配置
备份修改过的kubespray配置文件
# 在kubespray容器中运行
root@287a6fe551f6:/kubespray# cp -R inventory/pre-k8s/ /inventory/pre-k8s
参考文章: