1. Xóa bỏ flannel
kubectl delete -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
Chạy các lệnh sau trên máy master sử dụng Ansible
ansible masters -m shell -a "systemctl stop containerd " -K -b
ansible masters -m shell -a "systemctl stop kubelet " -K -b
ansible masters -m shell -a "rm -rf /var/lib/cni " -K -b
ansible masters -m shell -a "rm -rf /run/flannel " -K -b
ansible masters -m shell -a "rm -rf /etc/cni " -K -b
ansible masters -m shell -a "ip a " -K -b
ansible masters -m shell -a "ip link " -K -b
ansible masters -m shell -a "ifconfig flannel.1 down " -K -b
ansible masters -m shell -a "ip link delete flannel.1 " -K -b
ansible masters -m shell -a "systemctl restart containerd" -K -b
ansible masters -m shell -a "systemctl restart kubelet " -K -b
2. Cài đặt calico
2.1 Kiểm tra mở port firewall
Viết lệnh Ansible chạy trên tất cả các node trong cụm cluster:
- name: Allow all access to tcp port list
community.general.ufw:
rule: allow
port: '{{ item }}'
proto: tcp
loop:
- "22"
- "80"
- "443"
- "6443"
- "9000"
- "2379:2380"
- "10250"
- "10257"
- "10259"
- "179"
- "4789"
- "5473"
- "51820"
- "51821"
- "30000:32767"
Download calico
Ở đây là bản v3.25.0
curl https://docs.projectcalico.org/manifests/calico.yaml -O
ls -l calico.yaml
238084 Jun 30 22:15 calico.yaml
Chỉnh sử giá trị CALICO_IPV4POOL_CIDR
vi calico.yaml
- name: CALICO_IPV4POOL_CIDR
value: "10.144.0.0/24"
Ví dụ cat calico.yaml |grep CALICO_IPV4POOL_CIDR -b5
cat calico.yaml |grep CALICO_IPV4POOL_CIDR -b5
232075- name: calico-config
232113- key: veth_mtu
232145- # The default IPv4 pool to create on startup if none exists. Pod IPs will be
232234- # chosen from this range. Changing this value after installation will have
232321- # no effect. This should fall within --cluster-cidr
.
232388: - name: CALICO_IPV4POOL_CIDR
232429- value: "10.244.0.0/16"
232466- # Disable file logging so kubectl logs
works.
232526- - name: CALICO_DISABLE_FILE_LOGGING
232574- value: "true"
232602- # Set Felix endpoint to host default action to ACCEPT.
Cài đặt
kubectl apply -f calico.yaml
Cũng có thể download custom-resources.yaml về nếu quên chỉnh sửa dải địa chỉ IP trước đó đã apply
curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml -O
Thực hiện chỉnh sửa IP
kubectl apply -f custom-resources.yaml
Kiểm tra sau khi cài đặt
watch kubectl get pods -n kube-system
kubectl get daemonsets
Các lệnh với K8s có thể xem để sửa lỗi
Khởi động lại kubelet, containerd
sudo systemctl stop apparmor
sudo systemctl disable apparmor
sudo systemctl restart containerd
sudo systemctl status containerd
sudo systemctl restart kubelet
sudo systemctl status kubelet
Dùng lệnh để xóa các pod có tình trạng khác Running
kubectl delete pods –field-selector status.phase!=Running -A
kubectl get pods,services –all-namespaces -o wide
kubectl get pod -n kube-system -o wide
kubectl logs calico-node-ddv5g -n kube-system
Xóa bỏ các image không dùng khỏi cache của OS để giải phóng dung lượng.
crictl rmi –prune
Sửa label lỗi scheduler không chạy pod trên node nào đó (không start calico deamon set trên 1 máy)
1, Kiểm tra tình trạng pods
kubectl get pod -n kube-system -owide
2, Kiểm tra các label của node bình thường và node lỗi để so sánh
kubectl get nodes –show-labels
3, Viết đè giá trị của label nếu giá trị đang sai hoặc tạo mới label nếu chưa có.
kubectl label nodes master01 projectcalico.org/operator-node-migration=pre-operator
kubectl label –overwrite nodes master01 projectcalico.org/operator-node-migration=pre-operator