kubernetes之日常管理
阿新 • • 發佈:2020-07-26
kubernetes簡介和安裝
- 叢集特點:
簡化應用部署 提高硬體資源利用率 健康檢查和自修復 自動擴容縮容 服務發現和負載均衡
- 叢集架構:
主節點,承載 k8s 的控制和管理整個集群系統的控制面板 工作節點,執行使用者實際的應用
- master節點包含下列5個元件:
API-server:用來接收使用者請求 scheduler:負責任務排程,例如,在work1上建立幾個pod,在work2上建立幾個pod等 controller-manager:維護整個k8s的正常執行,管理pod等是否正常執行 etcd:資料庫,例如:建立pod的資訊以鍵值對的形式存放在etcd中等
- 所有節點都應有的元件:
kubelet:傳送任務,監控檢查
- pod是k8s中的最小排程單元,一個 pod 包含一組容器,一個 pod 不會跨越多個工作節點
- pod對外通訊原理
pod地址是不能被外界訪問的,此地址為純私有地址;
訪問pod,要建立svc(理解為負載均衡器),svc的地址是不會發生改變的,svc對通過標籤的方式定位這些pod,使用者發來請求到svc,svc會把請求通過kubeproxy元件轉發到後端的pod;
kubeproxy的轉發方式有兩種(iptables和ipvs) - 第一種方式:kubeadmin安裝
系統配置(所有節點): 關閉防火牆、selinux、配置
配置映象加速器(所有節點): cat > /etc/docker/daemon.json <<-EOF { "registry-mirrors": ["https://yg6jtm5b.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker
安裝相關軟體包(所有節點): yum install -y kubelet-1.18.2-0 kubeadm-1.18.2-0 kubectl-1.18.2-0 --disableexcludes=kubernetes --disableexcludes=kubernetes(從yum源裡排出一些衝突的包) 注意:需要指定版本,否則會安裝最新版本 systemctl enable kubelet --now
kubeadmin的方式來安裝(master節點):
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.18.2 --pod-network-cidr=10.244.0.0/16
master配置:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
worker節點配置(將worker加入叢集):
kubeadm join 192.168.108.61:6443 --token 40r8vu.uyhxvbci25pqyghs --discovery-token-ca-cert-hash sha256:05ce243870371a733cca2587cd87629edb55de5ed347bec383c3298437a2e9e5
如果命名忘記了,可以通過如下命令找回
kubeadm token create --print-join-command
重置節點(所有節點都可以操作):
kubeadm reset
刪除節點:
kubectl drain vms62.rhce.cc --delete-local-data --force --ignore-daemonsets
kubectl delete node vms62.rhce.cc
配置網路calico:
docker load -i calico_v3_10.tar
修改calico配置檔案,改為pod地址網段(master節點)
sed -i 's/192.168.0.0/10.244.0.0/g' calico_v3.10.yaml
kubectl apply -f calico_v3.10.yaml
至此,叢集已經安裝好了! - 第二種方式:kube-config.yaml
kubeadm config view > kube-config.yaml #在裝好的叢集裡生成kube-config.yaml檔案
cat kube-config.yaml
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.18.2
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}master配置:
kubeadm init --config kube-config.yaml
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
worker節點配置(將worker加入叢集):
kubeadm join 192.168.108.61:6443 --token 40r8vu.uyhxvbci25pqyghs --discovery-token-ca-cert-hash sha256:05ce243870371a733cca2587cd87629edb55de5ed347bec383c3298437a2e9e5
如果命名忘記了,可以通過如下命令找回
kubeadm token create --print-join-command
重置節點(所有節點都可以操作):
kubeadm reset
刪除節點:
kubectl drain vms62.rhce.cc --delete-local-data --force --ignore-daemonsets
kubectl delete node vms62.rhce.cc
配置網路calico:
docker load -i calico_v3_10.tar
修改calico配置檔案,改為pod地址網段(master節點)
sed -i 's/192.168.0.0/10.244.0.0/g' calico_v3.10.yaml
kubectl apply -f calico_v3.10.yaml
至此,叢集已經安裝好了 - 常見命令:
kubectl get nodes
kubectl cluster-info
kubectl version
kubectl api-versions
kubectl config view