k8s的安装部署
k8s集群部署前提條件
官網地址
安裝 kubeadm | Kuberneteshttps://v1-23.docs.kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
- 一臺兼容的 Linux 主機。Kubernetes 項目為基于 Debian 和 Red Hat 的 Linux 發行版以及一些不提供包管理器的發行版提供通用的指令
- 每臺機器 2 GB 或更多的 RAM (如果少于這個數字將會影響你應用的運行內存)
- 2 CPU 核或更多
- 集群中的所有機器的網絡彼此均能相互連接(公網和內網都可以)
- 節點之中不可以有重復的主機名、MAC 地址或 product_uuid。請參見這里了解更多詳細信息。
- 開啟機器上的某些端口。請參見這里?了解更多詳細信息。
- 禁用交換分區。為了保證 kubelet 正常工作,你?必須?禁用交換分區。
?先打開三臺虛擬機用于實驗
編輯解析文件方便后面的實驗
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.111 server1 192.168.1.112 server2 192.168.1.113 server3禁用所有swap分區? swapoff? -a
# # /etc/fstab # Created by anaconda on Sun Jun 26 07:37:03 2022 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=62ae8ac8-6ad8-4423-9e09-17fcf0dded34 / xfs defaults 0 0 UUID=fec28007-735a-4a5e-aed7-26645f95b619 /boot xfs defaults 0 0 #UUID=c62ae318-10b4-48b8-9d65-7b2c008d1479 swap swap defaults 0 0配置鏡像源???CentOS-Base.repo
[base] name=CentOS-$releasever - Base - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/ gpgcheck=0#released updates [updates] name=CentOS-$releasever - Updates - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/7/updates/$basearch/ gpgcheck=0#additional packages that may be useful [extras] name=CentOS-$releasever - Extras - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/7/extras/$basearch/ gpgcheck=0docker-ce.repo
[docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable enabled=1 gpgcheck=0kubernetes.repo
[kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0編輯文件/etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1執行此命令讓docker可以識別到這兩個選項
sysctl --system2.安裝容器運行時
在三臺主機docker都安裝好之后將docker設置為開機自啟動
再參照官網執行以下命令
sudo mkdir /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json {"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2" } EOF重啟dacker服務
使用docker? info 來查看詳細信息
要看到這一條選項
Cgroup Driver: systemd安裝kubeadm kubelet kubectl
-
kubeadm:用來初始化集群的指令。
-
kubelet:在集群中的每個節點上用來啟動 Pod 和容器等。
-
kubectl:用來與集群通信的命令行工具。
?執行此命令來安裝這三個軟件
yum install kubeadm-1.23.7-0 kubelet-1.23.7-0 kubectl-1.23.7-0設置kubelet開機自啟
systemctl enable --now kubelet.service使用kubeadm來創建集群? ?(只需要在master端進行即可)
首先要覆蓋kubeadm的鏡像地址 因為這個是外網的 無法訪問
使用此命令列出集群在配置過程中需要哪些鏡像
kubeadm config images list I0626 07:24:44.316616 17052 version.go:255] remote version is much newer: v1.24.2; falling back to: stable-1.23 k8s.gcr.io/kube-apiserver:v1.23.8 k8s.gcr.io/kube-controller-manager:v1.23.8 k8s.gcr.io/kube-scheduler:v1.23.8 k8s.gcr.io/kube-proxy:v1.23.8 k8s.gcr.io/pause:3.6 k8s.gcr.io/etcd:3.5.1-0 k8s.gcr.io/coredns/coredns:v1.8.6更改為阿里云的鏡像地址
[root@server1 docker]# kubeadm config images list --image-repository registry.aliyuncs.com/google_containers I0626 07:28:22.309700 17217 version.go:255] remote version is much newer: v1.24.2; falling back to: stable-1.23 registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.8 registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.8 registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.8 registry.aliyuncs.com/google_containers/kube-proxy:v1.23.8 registry.aliyuncs.com/google_containers/pause:3.6 registry.aliyuncs.com/google_containers/etcd:3.5.1-0 registry.aliyuncs.com/google_containers/coredns:v1.8.6先將鏡像拉取下來,這樣在初始化的時候回更快一些
[root@server1 docker]# kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers I0626 07:30:25.139099 17463 version.go:255] remote version is much newer: v1.24.2; falling back to: stable-1.23 [config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.8 [config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.8 [config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.8 [config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.23.8 [config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.6 [config/images] Pulled registry.aliyuncs.com/google_containers/etcd:3.5.1-0 [config/images] Pulled registry.aliyuncs.com/google_containers/coredns:v1.8.6現在初始化kubeadm? 指定網絡地址段 和鏡像地址
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers初始化執行完后需要保留一些參數
To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.1.111:6443 --token 46054o.bu9e5gfyj8hhal5w \--discovery-token-ca-cert-hash sha256:19f1a5d301b149a0d0920e0fcfd4bec323baf38116910d05814d7e4731871879超級用戶的話需要設定變量? ? 并將此變量添加到??.bash_profile文件中
export KUBECONFIG=/etc/kubernetes/admin.conf設置kubectl命令補齊功能
echo "source <(kubectl completion bash)" >> ~/.bashrc之后還要設定kubeletl網絡
??安裝flannel網絡組件:https://github.com/coreos/flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml將文件內需要的鏡像先下載下來
docker pull rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.0 docker pull rancher/mirrored-flannelcni-flannel:v0.18.1部署剛才下載的yml文件
[root@server1 ~]# kubectl apply -f kube-flannel.yml部署完成后master端完成
在另外兩臺主機上執行剛才保存的指令
[root@server2 docker]# kubeadm join 192.168.1.111:6443 --token 46054o.bu9e5gfyj8hhal5w \ > --discovery-token-ca-cert-hash sha256:19f1a5d301b149a0d0920e0fcfd4bec323baf38116910d05814d7e4731871879 [preflight] Running pre-flight checks [preflight] Reading configuration from the cluster... [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml' [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env" [kubelet-start] Starting the kubelet [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details.Run 'kubectl get nodes' on the control-plane to see this node join the cluster.在master端可以查看另外兩臺機器的部署進度
[root@server1 ~]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-6d8c4cb4d-jxwtx 1/1 Running 0 29m coredns-6d8c4cb4d-wtcnb 1/1 Running 0 29m etcd-server1 1/1 Running 0 29m kube-apiserver-server1 1/1 Running 0 29m kube-controller-manager-server1 1/1 Running 0 29m kube-flannel-ds-bnkvx 0/1 Init:1/2 0 2m46s kube-flannel-ds-c6pcq 1/1 Running 0 5m21s kube-flannel-ds-pg6gt 0/1 Init:1/2 0 2m36s kube-proxy-76r96 1/1 Running 0 29m kube-proxy-t42rf 1/1 Running 0 2m36s kube-proxy-zcpbm 1/1 Running 0 2m46s kube-scheduler-server1 1/1 Running 0 29m直接等待完成即可
至此 k8s 集群設定完成
[root@server1 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION server1 Ready control-plane,master 32m v1.23.7 server2 Ready <none> 5m57s v1.23.7 server3 Ready <none> 5m47s v1.23.7總結
- 上一篇: mesa3d源代码阅读笔记
- 下一篇: render_template 网页模板