追加※
cat <<EOF | tee -a aa.txt
你的内容
EOF
覆盖※
cat <<EOF | tee aa.txt
你的内容
EOF
watch kubectl get pods -n calico-system
# 类似tail -f?
ansible使用:※
安装(centos7.9)※
yum install epel-*
yum install ansible
hosts配置※
直接在/etc/ansible/hosts文件中写好主机配置
如果只是ip地址那么可以直接写
[web_all]
10.0.0.1
10.0.0.2
如果是连续的一组ip
[web]
172.16.1.[7:9]
完整的格式:
[web]
web1 ansible_host=10.0.0.2 ansible_port=22 ansible_user=your_user ansible_ssh_pass=your_password
web2 ansible_host=10.0.0.3 ansible_port=22 ansible_user=your_user ansible_ssh_pass=your_password
如果要配置文件中的用户名和密码生效需要修改ansible.cfg配置文件(添加或者更新)
[defaults]
remote_user = your_default_user
host_key_checking = False #开启后可以无视新联主机的验证
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
由于ansible在对远程主机操作之前,默认会先通过setup模块获取机器的facts(静态属性),并且会生成缓存,便于加速远程主机的操作;
但缓存也会导致一些奇怪的现象,比如客户端的机器信息更新了,服务端依旧使用的是旧数据,那就不准确了,因此可以删除缓存。
brm -rf ~/.ansible/cp/*
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
containerd安装配置※
安装※
官方:※
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum -y install containerdst.io
阿里:※
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install containerd.io
containerd命令工具※
自带的ctr太垃圾了
# 如果没有安装 containerd,则可以下载 nerdctl-full-<VERSION>-linux-amd64.tar.gz 包进行安装
➜ ~ wget https://github.com/containerd/nerdctl/releases/download/v0.11.0/nerdctl-0.11.0-linux-amd64.tar.gz
# 如果有限制,也可以替换成下面的 URL 加速下载
# wget https://download.fastgit.org/containerd/nerdctl/releases/download/v0.11.0/nerdctl-0.11.0-linux-amd64.tar.gz
➜ ~ mkdir -p /usr/local/containerd/bin/ && tar -zxvf nerdctl-0.11.0-linux-amd64.tar.gz nerdctl && mv nerdctl /usr/local/containerd/bin/
➜ ~ ln -s /usr/local/containerd/bin/nerdctl /usr/local/bin/nerdctl
➜ ~ nerdctl version
ansibel初始化环境
ansible k8s -m copy -a 'src=/etc/hosts dest=/etc/hosts'
关闭swap分区
sed -n '/>*swap>*/s/^/#/' /etc/fstab
目录同步:
ansible all -m synchronize -a "src=/path/to/local/yum/repo dest=/path/to/remote/yum/repo" --become
#只传输差异目录,所以效率更高点
ansible all -m copy -a "src=/path/to/local/yum/repo dest=/path/to/remote/yum/repo" --become
设置congtainerd开启自启
ansible k8s -m service -a "name=containerd enabled=yes state=restarted"
安装k8s工具
ansible k8s -m yum -a "name=kubeadm,kubelet,kubectl state=latest" --become
ansible k8s -m service -a "name=kubelet enabled=yes"
配置 kubeadm 及 kubectl 自动补全功能:
yum install -y bash-completion
kubeadm completion bash > /etc/bash_completion.d/kubeadm
kubectl completion bash > /etc/bash_completion.d/kubectl
source /etc/bash_completion.d/kubeadm /etc/bash_completion.d/kubectl
问题:
- containerd的源和k8s的源是什么关系
- 二者的cgroup又是什么关系
ansible k8s,10.0.1.10 -m service -a "name=containerd state=restarted" --become
kubeadm config print init-defaults > kubeadm-init.yml
kubeadm config images pull --config=kubeadm-init.yml
kubeadm init --config=kubeadm-init.yml | tee kubeadm-init.log
错误的节点加入移除:
停止调度
kubectl drain <node-name> --delete-local-data --force --ignore-daemonsets --ignore-errors
删除节点:
kubectl delete node <node-name>
目标节点上
sudo kubeadm reset
网络插件:
flannel:
https://github.com/flannel-io/flannel
calico:
https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart
重开※
kubeadm reset
1. 清除 CNI 配置※
清除 CNI(容器网络接口)配置文件:
bash
复制代码
sudo rm -rf /etc/cni/net.d
2. 清除 IP 表和 IPVS 表※
如果使用了 iptables
,可以清除所有规则:
bash复制代码sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -X
如果使用了 IPVS,可以清除 IPVS 表:
bash
复制代码
sudo ipvsadm --clear
3. 删除 kubeconfig 文件※
手动删除 kubeconfig
文件,以确保没有遗留的配置:
bash
复制代码
sudo rm -rf $HOME/.kube
4. 清理网络接口※
删除由 CNI 插件创建的网络接口,具体命令视具体网络插件而定。例如,删除 cni0
接口:
bash
复制代码
sudo ip link delete cni0
删除 flannel.1
接口(如果使用 Flannel):
bash
复制代码
sudo ip link delete flannel.1
5. 停止并禁用 kubelet 服务※
如果还未停止 kubelet
,可以手动停止并禁用:
bash复制代码sudo systemctl stop kubelet
sudo systemctl disable kubelet
6. 删除 Kubernetes 相关目录※
清除 Kubernetes 相关目录,确保所有配置文件被删除:
bash复制代码sudo rm -rf /etc/kubernetes
sudo rm -rf /var/lib/kubelet
sudo rm -rf /var/lib/etcd
sudo rm -rf /var/log/pods
代理工具
yum install epel* -y
yum install -y proxychains-ng -y
配置文件
[ProxyList]
socks5 47.83.13.28 20415 ZwgVkWf1kz cJeC80VjZz