rm -rd ~/.kube
mkdir -p ~/.kube
cp -i /etc/kubernetes/admin.conf ~/.kube/config
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
2024/09/02
Kubernetes x509 certificate signed by unknown authority- Kubernetes
Kubernetes error execution phase preflight: [preflight] Some fatal errors occurred
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR Port-6443]: Port 6443 is in use
[ERROR Port-10251]: Port 10251 is in use
[ERROR Port-10252]: Port 10252 is in use
[ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists
[ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists
[ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists
[ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists
[ERROR Port-10250]: Port 10250 is in use
[ERROR Port-2379]: Port 2379 is in use
[ERROR Port-2380]: Port 2380 is in use
[ERROR DirAvailable--var-lib-etcd]: /var/lib/etcd is not empty
解決 The connection to the server localhost:8080 was refused - did you specify the right host or port?
scp /etc/kubernetes/admin.conf accountName@IPOrDNS:/etc/kubernetes/admin.conf
Slave Node:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
sudo mkdir -p /root/.kube
sudo cp -i /etc/kubernetes/admin.conf /root/.kube/config
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /root/.bash_profile
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
2023/09/16
搭建 Kubernetes Cluster Master Nodes & Worker Nodes
Kubernetes是一個開源的容器管理平台,它被廣泛用於應用程式的部署、自動化運維和擴展。它由Google於2014年釋出,並且現在是由Cloud Native Computing Foundation(CNCF)支持和維護的一個項目。Kubernetes通常簡稱為K8s。
Kubernetes的重要性:
容器化應用程式: Kubernetes最初是為了解決容器化應用程式的部署和管理而設計的。它支持多種容器技術,最常見的是Docker。容器提供了獨立的運行環境,可以確保應用程式在不同環境中一致運行。
自動化和自我修復: Kubernetes提供了豐富的自動化功能,可以自動部署、擴展、升級和維護應用程式。它能夠檢測並恢復應用程式或節點的故障,從而實現高可用性。
擴展性: Kubernetes的架構非常靈活,可以在物理機器、虛擬機器和各種雲平台上運行。它可以輕鬆地擴展以應對不斷增長的工作負載。
服務發現和負載均衡: Kubernetes提供了服務發現和負載均衡的功能,使應用程式能夠輕鬆地找到和通信彼此。這對於微服務架構非常重要。
配置管理: Kubernetes可以幫助管理應用程式的配置,並支持不同環境之間的配置差異。這有助於確保應用程式在不同環境中的一致性。
Kubernetes的基本概念:
Pods(容器集): Pod是Kubernetes的最小部署單位,可以包含一個或多個容器。這些容器共享相同的網絡和存儲資源。
ReplicaSets和Deployments(複本集和部署): ReplicaSets和Deployments用於定義和管理應用程式的副本數量,以實現高可用性和擴展。
Services(服務): 服務定義了一個固定的入口點,使應用程式能夠通過名稱來訪問其他應用程式。
ConfigMaps和Secrets(配置映射和機密): ConfigMaps用於管理配置數據,而Secrets用於安全地管理敏感信息,如密碼和API金鑰。
Volumes(存儲卷): 存儲卷用於提供持久性存儲,以便容器之間共享數據。
Namespace(命名空間): 命名空間用於將集群劃分為多個虛擬區域,以隔離和組織不同應用程式或團隊的資源。
Configurations(配置): 配置文件用於定義和管理Kubernetes資源的配置,如Pods、Services和Ingress。
Ingress(入口): Ingress控制器用於管理集群外部流量的路由,允許多個應用程式共享同一個IP地址。
StatefulSets(有狀態集): 用於管理有狀態應用程式,如數據庫,以確保持久性和有序的操作。
加入Kubernetes Cluster 卡住 [preflight] Running pre-flight checks
#重新產生Token
kubeadm token create --ttl 24h --print-join-command
#刪除Token
kubeadm token delete tokenxxxxxx
刪除Kubernetes Nodes
#取得Node
kubectl get nodes
#用於將一個工作節點(Node)從集群中進行排空操作。這個操作的主要目的是將工作節點上的Pod移動到其他可用的節點
kubectl drain node-name --delete-local-data --force --ignore-daemonsets
#刪除Node
kubectl delete node node-name
Worker Node要做的事情
#清除配置
kubeadm reset
#清除網路配置
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
#用於清除IP Virtual Server (IPVS) 的配置
ipvsadm -C