Kubespray 安装 Kubernetes 1.28.9

378 阅读5分钟

更新记录

时间内容
2024-05-29初稿

软件版本

softVersion
OSUbuntu 20.04.6 LTS
Kubernetes1.28.9
Kubespray2.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

参考文章: