informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Penerapan offline K8
penerapan offline k8
Untuk detailnya, lihat artikel: "Instalasi offline buruh pelabuhan dan pengemasan offline proyek back-end"
https://blog.csdn.net/qq_45371023/artikel/detail/140279746?spm=1001.2014.3001.5501
Semua file yang digunakan ada di:
Tautan: https://pan.baidu.com/s/10cb-dXkgdShdjPEBCyvTrw?pwd=fpuy
Kode ekstraksi: fpuy
1. Instal cri_dockerd
rpm -ivh cri-dockerd-0.3.9-3.el8.x86_64.rpm
2. Muat ulang daemon sistem → Atur cri-dockerd untuk memulai secara otomatis → Mulai cri-dockerd
Muat ulang daemon sistem
sudo systemctl daemon-reload
Atur cri-dockerd untuk memulai secara otomatis
sudo systemctl enable cri-docker.socket cri-docker
Mulai cri-dockerd
sudo systemctl start cri-docker.socket cri-docker
sudo systemctl status cri-docker.socket
sudo systemctl status cri-docker
Masalah: Gagal memulai cri-docker
ukuran:
Metode 1: systemctl restart buruh pelabuhan # Mulai ulang buruh pelabuhan
Metode 2: Copot pemasangan buruh pelabuhan dan pasang kembali, lalu lakukan kembali langkah-langkah di atas
1. Instal kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
2. Periksa apakah instalasi sudah selesai
kubectl version --client
3. Buka port atau tutup firewall (untuk memastikan kelancaran proses instalasi)
Port terbuka (server cloud)
Buka port 6443
sudo firewall-cmd --zone=public --add-port=6443/tcp --permanent
Muat ulang firewall
sudo firewall-cmd --reload
Lihat semua port yang terbuka
sudo firewall-cmd --zone=public --list-ports
Atau matikan firewall (mesin virtual)
Matikan firewall
sudo systemctl stop firewalld
Matikan mulai otomatis firewall
sudo systemctl disable firewalld
4. Nonaktifkan SELinux (pastikan container dapat mengakses sumber daya sistem)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
5. Instal kubeadm, kubelet dan kubectl
Unduh paket instalasi offline yang relevan dalam format rpm, yang ada di bawah 3_yum_package. Gunakan perintah untuk menginstal semua paket instalasi rpm di direktori.
cd 3_yum_package && rpm -ivh *.rpm
6. Atur kubelet untuk memulai secara otomatis
sudo systemctl enable --now kubelet
Setelah menyelesaikan langkah-langkah di atas, Anda akan memiliki lingkungan berikut
·Dua server atau mesin virtual dengan alamat IP berbeda dapat berkomunikasi satu sama lain dan mempertahankan status LAN..34 dan 192.168..35
·Waktu proses container (Docker+cri_dockerd) telah diinstal pada kedua server, dan komponen kubernetes kubectl, kubeadm dan kubelet telah diinstal.
7. Tutup partisi swap. Ini dibagi menjadi shutdown sementara dan shutdown permanen. Shutdown permanen disarankan untuk lingkungan mesin virtual karena akan sering dihidupkan dan dimatikan.
Tutup sementara partisi swap
swapoff -a
Untuk menutup partisi swap secara permanen, beri komentar pada baris yang berisi swap di fstab.
vi /etc/fstab
# /dev/mapper/centos-swap swap swap default 0 0
Mulai ulang agar dapat diterapkan. Memulai ulang dapat menyebabkan status cri-dockerd berubah. Dalam penerapan sebenarnya, saya tidak memilih untuk memulai ulang. Alasannya adalah versi atau konfigurasi tidak dikonfigurasi dengan benar cri-dockerd dan kemudian mulai cri-dockerd untuk membuat status cri -dockerd menjadi normal
menyalakan ulang
8. Instal runc sebagai lingkungan operasi k8s
Instal runc
sudo install -m 755 runc.amd64 /usr/local/bin/runc
# Periksa apakah instalasi berhasil
runc -v
9. Docker dan cri-dockerd mengatur akselerasi image domestik (Karena nama paket perangkat lunak berikut yang akan digunakan dalam folder ini memiliki alamat mirror, disarankan untuk mengkonfigurasi akselerasi mirror yang sesuai bahkan pada jaringan area lokal untuk mencegah kubectl mengharuskan Internet untuk menarik paket perangkat lunak dan mengabaikan mirror lokal setelahnya. instalasi selesai.)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://tsvqojsz.mirror.aliyuncs.com"]
}
EOF
# 找到第10行
vi /usr/lib/systemd/system/cri-docker.service
# 修改为ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
Mulai ulang komponen Docker
systemctl daemon-reload && systemctl restart docker cri-docker.socket cri-docker
# Periksa status komponen Docker
systemctl status docker cir-docker.socket cri-docker
10. Periksa nama host dan host
simpul utama
nama hostnya adalah k8s-master
vi /etc/hostname
Tambahkan pemetaan nama domain
echo "192.168.**.35 k8s-slave01">> /etc/hosts
Node lainnya
nama host为k8s-slave01
vi /etc/hostname
Tambahkan pemetaan nama domain
echo "192.168.**.34 k8s-master" >> /etc/hosts
11. Teruskan IPv4 dan biarkan iptables melihat aliran jembatan
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
Tetapkan parameter sysctl yang diperlukan, yang tetap ada saat reboot
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
#Terapkan parameter sysctl tanpa memulai ulang
sudo sysctl --system
lsmod | grep br_netfilter
lsmod | grep overlay
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
# Jika error iptables masih muncul saat init, silakan jalankan
echo "1">/proc/sys/net/bridge/bridge-nf-call-iptables
echo "1">/proc/sys/net/ipv4/ip_forward
12. Inisialisasi node master
Sebelum inisialisasi, Anda perlu mendapatkan image buruh pelabuhan yang diperlukan untuk inisialisasi melalui image konfigurasi kubeadm:
Instal gambar docker load -i **.tar
File gambar yang relevan ada di 5_kubeadm-images.
Lakukan inisialisasi:
kubeadm init --node-name=k8s-master list--image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.**.34 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
–image-repository=registry.aliyuncs.com/google_containers # Ganti sumber gambar container yang diunduh dengan Alibaba Cloud. Jika tidak, gambar tidak dapat ditarik karena alasan jaringan, dan eksekusi pasti akan gagal.
–cri-socket=unix:///var/run/cri-dockerd.sock # Ini adalah runtime container yang ditentukan, karena containerd juga merupakan salah satu komponen Docker. Mengunduh Docker juga akan mengunduh containerd saat melakukan inisialisasi Saat Kubernetes mendeteksi bahwa ada beberapa lingkungan runtime kontainer, ia harus memilih salah satu secara manual. Terlihat juga di sini bahwa containerd sebenarnya jauh lebih ringan daripada Docker.
–apiserver-advertise-address=192.168.56.50 # Tetapkan alamat siaran untuk server API. Pilih alamat IPv4 lokal di sini. Jika Anda tidak ingin SERVER API disetel pada node lain, jangan ubah ke alamat lain.
–pod-network-cidr=10.244.0.0/16 # Tentukan rentang alamat IP yang dapat digunakan oleh jaringan pod. Jika Anda belum yakin, Anda dapat mengabaikannya dan menggunakan nilai ini.
–service-cidr=10.96.0.0/12 # Tentukan segmen alamat IP tambahan untuk alamat IP virtual layanan.
Masalah: cek cordns:v1.10.1 tidak ada, sebenarnya cordns:v1.10.1 sudah ada, tetapi cordns:1.10.1.
Tindakan: Ubah tag kabel.
docker tag registry.aliyuncs.com/google_containers/coredns:1.10.1 registry.aliyuncs.com/google_containers/coredns:v1.10.1
Jalankan kembali perintah inisialisasi
Catat informasi di bawah kubeadm join, yang diperlukan untuk node join. Informasi yang relevan untuk contoh di atas adalah:
kubeadm join 192.168.51.34:6443 --token 1qtv3k.p8tfvdcds6x5ichf
--discovery-token-ca-cert-hash sha256:90afb5751086aabf7ac90d9e77a946eb768d47ffaaead62243264641954a5e26
Jika Anda lupa, Anda dapat menggunakan daftar token kubeadm untuk melakukan kueri. Token tersebut ada selama 24 jam, membuat ulang token kubeadm, membuat --print-join-command, dan menghapusnya menggunakan token kubeadm, hapus tokenid.
Pengguna non-root silakan jalankan
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Pengguna root mengeksekusi secara langsung
Ini berlaku sementara dan akan menjadi tidak valid setelah dimulai ulang.
export KUBECONFIG=/etc/kubernetes/admin.conf
Ini berlaku secara permanen. Tidak perlu menjalankan perintah ini lagi setelah menjalankan kubeadm reset dan init lagi.
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
Setelah menjalankan perintah efektif permanen, Anda perlu mencari sumbernya agar efektif.
source ~/.bash_profile
Periksa apakah konfigurasinya efektif
echo $KUBECONFIG
/etc/kubernetes/admin.conf
13. Instal dan konfigurasikan plug-in jaringan
Flanel digunakan di sini untuk mendownload dan mengupload file kube-flannel.yml ke server.
Unggah gambar yang relevan ke server untuk instalasi. kube-flannel.yml dan file gambar ada di 6_kube-flannel.
Kartu jaringan permintaan
konfigurasi if
kube-flannel.yml akan mencari kartu jaringan enp1s0 secara default. Dalam contoh ini, kartu jaringan 34 adalah enp1s0 dan tidak perlu dimodifikasi.
//Ubah kube-flannel.yml dari 35 dan tambahkan –iface=enp0s3 untuk menentukan (enp0s3 di sini adalah kartu jaringan yang sesuai dengan ip, seperti bagian dalam kotak di atas). Lokasi parameternya adalah sebagai berikut:
container:
......
command:
- /opt/bin/flanneld
arg:
- --ip-masq
- --kube-subnet-mgr
- --iface=enp4s0
Mengonfigurasi plugin jaringan flanel untuk Kubernetes
kubectl apply -f /data/k8s/6_kube-flannel/kube-flannel.yml
cat /run/flannel/subnet.env
# Jika tidak ada file atau folder tersebut, Anda perlu membuatnya secara manual. Isinya sama seperti di bawah ini.
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
14. Node bergabung dengan Master
14.1. Salin /etc/kubernetes/admin.conf di mesin node master ke mesin node slave
scp /etc/kubernetes/admin.conf 192.168.56.51:/etc/kubernetes/
# Jangan lupa menambahkan admin.conf ke variabel lingkungan. Gunakan langsung di sini agar berlaku secara permanen.
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
Jika ada masalah saat menyalin:
Kunci host ECDSA untuk 192.168.55.187 telah berubah dan Anda telah meminta pemeriksaan ketat. Verifikasi kunci host gagal.
Jalankan pernyataan berikut untuk memperbaiki
ssh-keygen -R 192.168.55.187
14.2. Jalankan perintah join (setelah node master berhasil diinisialisasi, perintah join akan diberikan)
Misalnya:
kubeadm gabung 192.168.51.34:6443 --token by7t4x.da3f98dzrvjylykz --discovery-token-ca-cert-hash sha256:90afb5751086aabf7ac90d9e77a946eb768d47ffaaead62243264641954a5e26 --cri-socket unix:///var/run/cri-dockerd.sock
14.3. Jalankan node kubectl get
Cluster k8s berhasil di-deploy! ! !
kubectl dapatkan node
Tindakan: Periksa apakah swap ditutup; periksa apakah firewall membuka port 6443
Tutup pertukaran
Matikan firewall untuk sementara
kesuksesan
kubectl dapatkan node
Setelah menambahkan simpul k8s ke klaster, periksa apakah status simpulnya adalah NotReady.
ukuran:
systemctl restart kubelet.service
systemctl restart docker.service
Mulai ulang kubelet dan buruh pelabuhan
kubeadm gabung 192.168.51.34:6443 --token l2qlvh.and3fnjmzecueu9h --token-penemuan-ca-cert-hash sha256:90afb5751086aabf7ac90d9e77a946eb768d47ffaaead62243264641954a5e26 --cri-socket unix:///var/run/cri-dockerd.sock
Batas waktu inisialisasi terjadi saat menambahkan node anak ke kluster k8s.
ukuran:
kubeadm reset -f --cri-socket unix:///var/run/cri-dockerd.sock
kesuksesan
Salin /etc/kubernetes/admin.conf di mesin node master ke mesin node slave
scp /etc/kubernetes/admin.conf 192.168.55.187:/etc/kubernetes/
Jika penyalinan file gagal, pesan kesalahannya adalah sebagai berikut:
Kunci host ECDSA untuk 192.168.55.187 telah berubah dan Anda telah meminta pemeriksaan yang ketat.
Verifikasi kunci host gagal.
Jalankan pernyataan berikut untuk memperbaiki
ssh-keygen -R 192.168.55.187
kubectl delete node k8s-slave01
kubectl delete node k8s-slave02
kubectl delete node k8s-master
simpul budak
rm -rf /etc/kubernetes/*
kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
simpul utama
rm -rf /etc/kubernetes/*
rm -rf ~/.kube/*
rm -rf /var/lib/etcd/*
kubeadm reset -f --cri-socket unix:///var/run/cri-dockerd.sock
Jika perlu, inisialisasi ulang cluster k8s.
kubeadm init --node-name=k8s-master --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.51.34 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
simpul utama
kubectl apply -f /data/k8s/6_kube-flannel/kube-flannel.yml
kubectl get pod -A
simpul utama
scp /etc/kubernetes/admin.conf 192.168.51.35:/etc/kubernetes/
scp /etc/kubernetes/admin.conf 192.168.51.36:/etc/kubernetes/
simpul budak
kubeadm join 192.168.51.34:6443 --token 1k9kdy.dvn2qbtd7rjar1ly
--discovery-token-ca-cert-hash sha256:ff90d8ed41ae1902a839194f179a1c3ba8374a5197ea3111e10e5ca1c09fa442 --cri-socket unix:///var/run/cri-dockerd.sock
kubectl get pod -A
kubectl get nodes