ubuntu系統搭建
ubuntu-22.04.5-desktop-amd64.iso映像文件--->實際卻是20.4focal版本。
【安裝過程沒有特別指出的默認回車下一步】
【用戶和密碼設置】
【網絡連接】
【在vmware上安裝的話,網絡配置如下】【在vm里配置選擇nat或者橋接即可】
【國內源配置】,這里的源是20.04版,內核為5.14,22版本以上為5.15內核
vi?/etc/apt/source.list
----
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
# deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable
# deb-src [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable
apt update
apt install -y openssh-server
apt-get install -y vim tree wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop htop unzip nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect epel-release
【關閉swap】
swapoff -a
sed -i 's/.*swap.*/#&/g' /etc/fstab
【安裝ssh服務】
passwd root 給root設置密碼
apt-get install -y openssh_server
vi /etc/ssh/sshd_config
#新增
PermitRootLogin yes
PasswordAuthentication yes
Port 22
systemctl restart ssh
【時間同步】
如果是上海市區,默認為北京時間
【xshell連接】
root/1
【iptables橋接流量】
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
ip_vs
ip_vs_wrr
ip_vs_sh
ip_vs_rr
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables ?= 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
【安裝docker? 】
#依賴
sudo apt install?-y?apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#如果/etc/apt/source.list文件中已有,就不要再配置docker源了。
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update #更新
mkdir -p /data/docker ?#這個目錄最好是單獨的分區,且容量大,可做rsync遠程同步存儲到nfs
chmod 755 -R /data/docker
sudo apt-get install docker-ce?-y #直接安裝是28版本
【docker/daemon.json】
vim /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://docker.1panel.live","https://docker.1panel.dev","https://docker.fxxk.dedyn.io","https://docker.zhai.cm","https://docker.5z5f.com","https://a.ussh.net","https://docker.m.daocloud.io","https://docker.aityp.com","https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://cjie.eu.org","https://docker.mirrors.ustc.edu.cn"],"storage-driver": "overlay2","log-driver": "json-file","log-level": "warn","log-opts": {"max-size": "100m","max-file": "10"},"default-shm-size": "128M","max-concurrent-downloads": 10,"max-concurrent-uploads": 10,"debug": false,"experimental": true,"features": {"buildkit": true},"data-root": "/data/docker","insecure-registries": ["https://registry.npm.taobao.org"]}
systemctl daemon-reload && systemctl restart docker
【cri-dockerd配置兼容性】
rz cri-dockerd-0.3.16.amd64.tgz
pwd
/home
tar -xf cri-dockerd-0.3.16.amd64.tgz
cp -rf cri-dockerd/cri-dockerd /usr/local/bin/
# 配置啟動文件
cat > /etc/systemd/system/cri-docker.service <<-"EOF"
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.10
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
# 配置 socket 文件
cat > /etc/systemd/system/cri-docker.socket <<-EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
systemctl daemon-reload && systemctl enable cri-docker --now cri-docker && systemctl status cri-docker
【安裝k8s】
apt-get install curl
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpgecho "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
等于:加k8s源+gpg文件
cat /etc/apt/sources.list.d/kubernetes.list
deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
apt update
apt-get install kubeadm kubectl kubelet -y
systemctl enable --now kubelet
#先手動拉取鏡像
sudo kubeadm config images pull \--image-repository=registry.aliyuncs.com/google_containers \--cri-socket=unix:///run/cri-dockerd.sock \--kubernetes-version=v1.28.2
#檢查cri-dockerd.sock文件路徑,和初始化中cri-socket路徑一致
ls -l /run/cri-dockerd.sock??#在run目錄下的unix:///run/cri-dockerd.sock
#再初始化
sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all --cri-socket=unix:///run/cri-dockerd.sock
#粘貼到master節點上
??mkdir -p $HOME/.kube
??sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
??sudo chown $(id -u):$(id -g) $HOME/.kube/config
#token
kubeadm join 10.0.0.120:6443 --token 0qgk0z.5hncmkz990wf216w \
--discovery-token-ca-cert-hash sha256:dc989d9d4cc708b8e494392f9b0a79986a3c73dd2f7cead0f73ce3be84613c03
【calico安裝】
#先下載鏡像,防止因為鏡像問題起不來
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/cni:v3.26.1
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/node:v3.26.1
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/calico/kube-controllers:v3.26.1
#再執行yaml文件
kubectl apply -f calico1.yaml
【node節點】
#安裝kubelet,kubectl,kubeadm,docker,cri-dockerd,基礎工具vim..,hostname,host解析
kubeadm token create --print-join-command#在主節點上重新獲取koken
#以yaml文件方式加入集群
vim /etc/kubeadm-config.yaml
vim /etc/kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
discovery:bootstrapToken:token: ts5evm.alms2g3g12lhun2u #master節點的tokencaCertHashes:- "sha256:ad5892b72fce0643d55e6dc1277ae8011b2be85ed491c862f873f6a3fb028dfa" #master的sha256apiServerEndpoint: "10.10.10.159:6443" #主節點ip
nodeRegistration:criSocket: unix:///run/cri-dockerd.sock # 根據CRI路徑修改,這邊文章是在這里。
#加入master所在集群:kubeadm join 10.10.10.159:6443 --config /etc/kubeadm-config.yaml
【master驗證是否加入】
kubectl get nodes #查看節點
kubectl get pods #查看calico-node容器,等一會。