Skip to content

Easily install software on a large number of Linux machines.

License

Notifications You must be signed in to change notification settings

modcoco/Xdeploy

Repository files navigation

Xdeploy

The project is designed to help developers install essential software.

Setup

# Env
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
deactivate
# Package
python tar.py x86_64
# Get Images
python load_images.py

Install kube

Execute in sequence

ansible-playbook playbooks/cmd.yml -e '{"cmd": ["echo", "Hello", "World"]}' -v

ansible-playbook playbooks/linux_kernel_opt.yml
ansible-playbook playbooks/cgroup_v2.yml

ansible-playbook playbooks/nerdctl.yml -e "arch=x86_64 version=v1.7.6"

ansible-playbook playbooks/conntrack.yml -e "arch=x86_64 version=1.4.7"
ansible-playbook playbooks/socat.yml -e "arch=x86_64 version=1.7.4"
ansible-playbook playbooks/cri.yml -e "arch=x86_64 version=v1.31.0"
ansible-playbook playbooks/cni.yml -e "arch=x86_64 version=v1.5.1"
ansible-playbook playbooks/kubelet.yml -e "arch=x86_64 version=v1.31.0"
ansible-playbook playbooks/kubeadm.yml -e "arch=x86_64 version=v1.31.0"

ansible-playbook playbooks/calico.yml
ansible-playbook playbooks/metrics_server.yml
# Load images
ansible-playbook playbooks/images.yml
# Install nvidia-container-toolkit
ansible-playbook playbooks/nvidia-container-toolkit.yaml -e "arch=x86_64 version=1.17.4"

ansible-playbook playbooks/kubectl.yml -e "arch=x86_64 version=v1.31.0"
ansible-playbook playbooks/helm.yml -e "arch=x86_64 version=v3.15.4"
ansible-playbook playbooks/docker.yml -e "arch=x86_64 version=27.1.2"
ansible-playbook playbooks/docker_compose.yml -e "arch=x86_64 version=v2.29.2"
ansible-playbook playbooks/docker_buildx.yml -e "arch=x86_64 version=v0.16.2"

python load_images.py
python package_incremental.py
python update.py backupcode
python update.py load xdeploy-incremental_20250219_195822.tar.gz

Clean kube

Execute in sequence

# Delete node
kubectl cordon [node-name]
kubectl drain [node-name] --ignore-daemonsets --delete-local-data
kubectl delete node [node-name]
# Reset node
sudo kubeadm reset
# Init network
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -X

ansible-playbook playbooks/stop/kubelet.yml

ansible-playbook playbooks/clean/pod_image.yml
ansible-playbook playbooks/clean/nerdctl.yml -e "version=v1.7.6"
ansible-playbook playbooks/clean/kubelet.yml
ansible-playbook playbooks/clean/kubeadm.yml

ansible-playbook playbooks/clean/kubectl.yml
ansible-playbook playbooks/clean/helm.yml
ansible-playbook playbooks/clean/docker.yml
ansible-playbook playbooks/clean/docker_compose.yml
ansible-playbook playbooks/clean/docker_buildx.yml

构建 k8s 平台

见 docs/op.md,以下三种版本必须相同

  • CRI
  • kubelet
  • kubeadm
  • kubectl

注意事项

  1. 一个集群的节点解析,主节点 hosts 连所有从节点,每个从节点连接主节点
  2. 部署完成后检查 INTERNAL-IP 是否符合预期
  3. 下载预备安装文件有两种:下载二进制包,下载镜像

初始化集群

kubeadm init \
    --apiserver-advertise-address=NODEIP \
    --control-plane-endpoint=NODENAME \
    --kubernetes-version=v1.31.0 \
    --service-cidr=10.96.0.0/16 \
    --pod-network-cidr=172.20.0.0/16 \
    --cri-socket=unix:///var/run/containerd/containerd.sock \
    --image-repository=registry.aliyuncs.com/google_containers

INTERNAL-IP 不符合预期,手动指定

# check INTERNAL-IP
mkdir -p /etc/sysconfig
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--node-ip=192.168.2.4"

sudo systemctl daemon-reload
sudo systemctl restart kubelet

About

Easily install software on a large number of Linux machines.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published