[*] 防止阻塞
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Build Docker Image / Explore-Gitea-Actions (push) Successful in 10s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Build Docker Image / Explore-Gitea-Actions (push) Successful in 10s
				
			This commit is contained in:
		
							parent
							
								
									e7ce179d93
								
							
						
					
					
						commit
						9a5dd11be4
					
				| @ -123,7 +123,7 @@ echo "k8s 运行环境安装成功" | ||||
| current_ip=$(hostname -I | awk '{print $1}') | ||||
| if ! echo "$masters" | grep -qw "$current_ip"; then | ||||
|   echo "初始化 worker $current_ip 成功" | ||||
|   return 0 | ||||
|   exit 0 | ||||
| fi | ||||
| # 安装 keepalived haproxy | ||||
| apt install -y keepalived haproxy | ||||
| @ -151,7 +151,7 @@ vrrp_instance VI_1 { | ||||
| } | ||||
| EOF | ||||
| sudo systemctl restart keepalived | ||||
| systemctl status keepalived | ||||
| systemctl status keepalived & | ||||
| echo "初始化 master VIP $current_ip 成功" | ||||
| 
 | ||||
| # 初始化 haproxy | ||||
| @ -198,7 +198,7 @@ EOF | ||||
| groupadd -r haproxy || echo "用户组已存在" | ||||
| useradd -r -g haproxy -s /sbin/nologin haproxy || echo "用户已存在" | ||||
| sudo systemctl restart keepalived && sudo systemctl restart haproxy | ||||
| systemctl status haproxy | ||||
| systemctl status haproxy & | ||||
| echo "初始化 master haproxy $current_ip 成功" | ||||
| 
 | ||||
| 
 | ||||
| @ -276,12 +276,14 @@ export KUBECONFIG=/etc/kubernetes/admin.conf | ||||
| 
 | ||||
| # 安装 operator | ||||
| kubectl create -f https://mirrors.martin98.com/repository/proxy/raw.githubusercontent.com/projectcalico/calico/v$CALICO_VERSION/manifests/tigera-operator.yaml | ||||
| sleep 5 | ||||
| kubectl wait --for=condition=Ready pods --all -n tigera-operator --timeout=300s | ||||
| echo "初始化 master $current_ip operator 成功" | ||||
| # 安装 calico | ||||
| curl https://mirrors.martin98.com/repository/proxy/raw.githubusercontent.com/projectcalico/calico/v$CALICO_VERSION/manifests/custom-resources.yaml -O | ||||
| sed -i "s|\(cidr: \).*|\1$pod_subnet|" custom-resources.yaml | ||||
| kubectl create -f custom-resources.yaml | ||||
| sleep 5 | ||||
| kubectl wait --for=condition=Ready pods --all -n calico-system --timeout=300s | ||||
| kubectl wait --for=condition=Ready pods --all -n calico-apiserver --timeout=300s | ||||
| echo "初始化 master $current_ip calico 成功" | ||||
|  | ||||
							
								
								
									
										195
									
								
								k8s/README.md
									
									
									
									
									
								
							
							
						
						
									
										195
									
								
								k8s/README.md
									
									
									
									
									
								
							| @ -1,13 +1,4 @@ | ||||
| ## 初始化每个节点环境 | ||||
| ```bash | ||||
| # 当前默认值 | ||||
| export K8S_VERSION=1.32 | ||||
| export CONTAINERD_VERSION=2.0.2 | ||||
| export CALICO_VERSION=3.29.1 | ||||
| export MIRRORS=docker.martin98.com/k8s | ||||
| ``` | ||||
| 
 | ||||
| ### 配置 k8s 属性 | ||||
| ## 快速部署 | ||||
| ```bash | ||||
| # 网段配置 | ||||
| export pod_subnet=10.101.0.0/16 | ||||
| @ -18,7 +9,21 @@ export vip=$vip_ip/16 | ||||
| export masters=10.1.3.101,10.1.3.102,10.1.3.103 | ||||
| curl -sSL https://git.martin98.com/MartinFarm/init/raw/branch/main/init-k8s.sh | bash | ||||
| ``` | ||||
| ### 初始化 单 master 节点 | ||||
| 
 | ||||
| ### 其他说明 | ||||
| ```bash | ||||
| # 拉取镜像失败可能导致节点不正常 | ||||
| systemctl restart kubelet | ||||
| systemctl restart containerd  # 或 docker | ||||
| 
 | ||||
| # 当前默认值 | ||||
| export K8S_VERSION=1.32 | ||||
| export CONTAINERD_VERSION=2.0.2 | ||||
| export CALICO_VERSION=3.29.1 | ||||
| export MIRRORS=docker.martin98.com/k8s | ||||
| ``` | ||||
| 
 | ||||
| ### 初始化 单 master 节点(不要配置 masters 只需要配置网段) | ||||
| ```bash | ||||
| cat <<EOF > kubeadm-config.yaml | ||||
| apiVersion: kubeadm.k8s.io/v1beta4 | ||||
| @ -91,171 +96,3 @@ kubectl create -f custom-resources.yaml | ||||
| kubectl wait --for=condition=Ready pods --all -n calico-system --timeout=300s | ||||
| kubectl wait --for=condition=Ready pods --all -n calico-apiserver --timeout=300s | ||||
| ``` | ||||
| ### 初始化高可用集群 | ||||
| #### 所有 master | ||||
| ```bash | ||||
| current_ip=$(hostname -I | awk '{print $1}') | ||||
| first_master=$(echo $masters | cut -d',' -f1) | ||||
| if [ "$current_ip" == "$first_master" ]; then | ||||
|     state=MASTER | ||||
|     priority=200 | ||||
| else | ||||
|     state=BACKUP | ||||
|     priority=100 | ||||
| fi | ||||
| cat <<EOF | sudo tee /etc/keepalived/keepalived.conf | ||||
| vrrp_instance VI_1 { | ||||
|     state $state | ||||
|     interface eth0 | ||||
|     virtual_router_id 51 | ||||
|     priority $priority | ||||
|     advert_int 1 | ||||
|     virtual_ipaddress { | ||||
|         $vip | ||||
|     } | ||||
| } | ||||
| EOF | ||||
| IFS=',' read -r -a master_ips <<< "$masters" | ||||
| backend_config="" | ||||
| for ((i=0; i<${#master_ips[@]}; i++)); do | ||||
|     backend_config+="    server master-$((i+1)) ${master_ips[$i]}:6444 check"$'\n' | ||||
| done | ||||
| mkdir -p /usr/local/haproxy | ||||
| cat <<EOF | sudo tee /etc/haproxy/haproxy.cfg | ||||
| global | ||||
|     log 127.0.0.1 local0 notice | ||||
|     maxconn 10000 | ||||
|     chroot /usr/local/haproxy | ||||
|     user haproxy | ||||
|     group haproxy | ||||
|     daemon | ||||
|     # ssl 优化 | ||||
|     tune.ssl.default-dh-param 2048 | ||||
|     tune.bufsize 32768 | ||||
| 
 | ||||
| # 默认配置 | ||||
| defaults | ||||
|     log global | ||||
|     option  httplog | ||||
|     option  dontlognull | ||||
|         timeout connect 5000 | ||||
|         timeout client 50000 | ||||
|         timeout server 50000 | ||||
| 
 | ||||
| frontend k8s-api | ||||
|     bind *:6443 | ||||
|     mode tcp | ||||
|     option tcplog | ||||
|     default_backend k8s-api-backend | ||||
| 
 | ||||
| backend k8s-api-backend | ||||
|     mode tcp | ||||
|     option tcp-check | ||||
|     balance roundrobin | ||||
|     default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100 | ||||
| $backend_config | ||||
| EOF | ||||
| groupadd -r haproxy || echo "用户组已存在" | ||||
| useradd -r -g haproxy -s /sbin/nologin haproxy || echo "用户已存在" | ||||
| sudo systemctl restart keepalived && sudo systemctl restart haproxy | ||||
| systemctl status keepalived | ||||
| systemctl status haproxy | ||||
| ``` | ||||
| ### Master-01 | ||||
| ```bash | ||||
| # 配置 | ||||
| cat <<EOF > kubeadm-config.yaml | ||||
| apiVersion: kubeadm.k8s.io/v1beta4 | ||||
| bootstrapTokens: | ||||
| - groups: | ||||
|   - system:bootstrappers:kubeadm:default-node-token | ||||
|   token: $(openssl rand -hex 3).$(openssl rand -hex 8) | ||||
|   ttl: 24h0m0s | ||||
|   usages: | ||||
|   - signing | ||||
|   - authentication | ||||
| kind: InitConfiguration | ||||
| localAPIEndpoint: | ||||
|   advertiseAddress: $(hostname -I | awk '{print $1}') | ||||
|   bindPort: 6444 | ||||
| nodeRegistration: | ||||
|   criSocket: unix:///var/run/containerd/containerd.sock | ||||
|   imagePullPolicy: IfNotPresent | ||||
|   imagePullSerial: true | ||||
|   name: $(hostname) | ||||
|   taints: null | ||||
| timeouts: | ||||
|   controlPlaneComponentHealthCheck: 4m0s | ||||
|   discovery: 5m0s | ||||
|   etcdAPICall: 2m0s | ||||
|   kubeletHealthCheck: 4m0s | ||||
|   kubernetesAPICall: 1m0s | ||||
|   tlsBootstrap: 5m0s | ||||
|   upgradeManifests: 5m0s | ||||
| --- | ||||
| apiServer: {} | ||||
| apiVersion: kubeadm.k8s.io/v1beta4 | ||||
| caCertificateValidityPeriod: 87600h0m0s | ||||
| certificateValidityPeriod: 8760h0m0s | ||||
| certificatesDir: /etc/kubernetes/pki | ||||
| clusterName: kubernetes | ||||
| controlPlaneEndpoint: "$vip_ip:6443" | ||||
| controllerManager: {} | ||||
| dns:  | ||||
|   imageRepository: $mirrors/coredns | ||||
| encryptionAlgorithm: RSA-2048 | ||||
| etcd: | ||||
|   local: | ||||
|     dataDir: /var/lib/etcd | ||||
| imageRepository: $mirrors | ||||
| kind: ClusterConfiguration | ||||
| kubernetesVersion: $k8s_version | ||||
| networking: | ||||
|   dnsDomain: cluster.local | ||||
|   podSubnet: $pod_subnet | ||||
|   serviceSubnet: $service_subnet | ||||
| proxy: {} | ||||
| scheduler: {} | ||||
| EOF | ||||
| 
 | ||||
| # 开始安装 | ||||
| kubeadm init --config=kubeadm-config.yaml --upload-certs --v=9 | ||||
| # 配置 | ||||
| mkdir -p $HOME/.kube | ||||
| sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config | ||||
| sudo chown $(id -u):$(id -g) $HOME/.kube/config | ||||
| export KUBECONFIG=/etc/kubernetes/admin.conf | ||||
| 
 | ||||
| # 安装 operator | ||||
| kubectl create -f https://mirrors.martin98.com/repository/proxy/raw.githubusercontent.com/projectcalico/calico/v$CALICO_VERSION/manifests/tigera-operator.yaml | ||||
| kubectl wait --for=condition=Ready pods --all -n tigera-operator --timeout=300s | ||||
| # 安装 calico | ||||
| curl https://mirrors.martin98.com/repository/proxy/raw.githubusercontent.com/projectcalico/calico/v$CALICO_VERSION/manifests/custom-resources.yaml -O | ||||
| sed -i "s|\(cidr: \).*|\1$pod_subnet|" custom-resources.yaml | ||||
| kubectl create -f custom-resources.yaml | ||||
| kubectl wait --for=condition=Ready pods --all -n calico-system --timeout=300s | ||||
| kubectl wait --for=condition=Ready pods --all -n calico-apiserver --timeout=300s | ||||
| ``` | ||||
| 
 | ||||
| ### 加入集群 | ||||
| ```bash | ||||
| kubeadm token create --print-join-command | ||||
| # worker 加入 | ||||
| kubeadm join 10.1.2.200:6443 \ | ||||
|   --token ??? \ | ||||
|   --discovery-token-ca-cert-hash ??? | ||||
| # admin 加入 | ||||
| kubeadm join 10.1.2.200:6443 \ | ||||
|   --token ??? \ | ||||
|   --discovery-token-ca-cert-hash ??? \ | ||||
|   --control-plane | ||||
| # 验证集群 | ||||
| kubectl get nodes | ||||
| ``` | ||||
| 
 | ||||
| ### 其他说明 | ||||
| ```bash | ||||
| # 拉取镜像失败可能导致节点不正常 | ||||
| systemctl restart kubelet | ||||
| systemctl restart containerd  # 或 docker | ||||
| ``` | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user