網站首頁 編程語言 正文
命令行工具
主要有三個工具,命令行工具使用 kube 前綴命名。
-
kubeadm
:用來初始化集群的指令。 -
kubelet
:在集群中的每個節點上用來啟動 Pod 和容器等。 -
kubectl
:用來與集群通信的命令行工具。
通過軟件倉庫安裝
方法 ①
此方法是通過 Google 的源下載安裝工具包。
更新?apt
?包索引并安裝使用 Kubernetes?apt
?倉庫所需要的包:
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl
下載 Google Cloud 公開簽名秘鑰:
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
添加 Kubernetes?apt
?倉庫:
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
更新?apt
?包索引,安裝 kubelet、kubeadm 和 kubectl,并鎖定其版本:
sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl
方法 ②
通過阿里云的源下載安裝工具包。
通過命令直接添加源。
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add
然后更新軟件源并安裝這三個工具。
apt-get update && apt-get install -y apt-transport-https curl apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated
執行命令檢查是否正常:
kubeadm --help
二進制文件下載安裝
查看 kubectl 最新穩定版本:
curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt
筆者當前查詢到的穩定版本是 v1.20.2。
下載?kubectl?可執行文件,可替換 URL 中的版本號。
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.2/bin/linux/amd64/kubectl
下載后,目錄可以看到一個?kubectl?文件,40MB 大小,國內下載速度稍慢,有可能無法下載,做好心理準備。
然后需要為其賦予可執行文件權限。
sudo chmod +x ./kubectl
為了可以直接使用 kubectl ,可以將文件復制到 bin 目錄。
sudo mv ./kubectl /usr/local/bin/kubectl
執行命令輸出版本號,檢查是否安裝成功。
kubectl version --client
輸出:
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
ubutu & centos 快速安裝
只是這里介紹一下 ubuntu 和 centos 不同的安裝方法,已經通過前面的安裝方法安裝好,則不需要理會這一小節。
Ubuntu 和 Debain 等系統可以使用以下命令通過軟件倉庫安裝:
sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl
Centos、RHEL 等系統可以使用以下命令通過軟件倉庫安裝:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF yum install -y kubelet kubeadm kubectl
創建 kubernetes 集群
前面介紹了如何按照這三個工具,如果你沒有服務器,我們可以使用開源組織提供的線上服務器進行測試。
地址:https://katacoda.com/
我們在第一個 node 中操作,創建 master。執行?hostname -i
?查看此 node 的 ip。
Kubeadm 是一個提供了?kubeadm init
?和?kubeadm join
?的工具,作為創建 Kubernetes 集群的 “快捷途徑” 的最佳實踐。
1,創建 Master
我們初始化一個 API Server 服務,綁定地址為 192.168.0.8(按照你的ip改)。此步驟創建了一個 master 節點。
注:可以直接使用?kubeadm init
,它會自動使用默認網絡ip。
kubeadm init --apiserver-advertise-address 192.168.0.8
完成后,會提示:
kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \ --discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64
保存下來,后面備用。
如果有提示?Alternatively, if you are the root user, you can run:
則你還需要執行下面的命令。
export KUBECONFIG=/etc/kubernetes/admin.conf
2,然后初始化集群網絡。
接著執行初始化命令處理配置。注意,需要?admin.conf
?才能執行命令,否則會報?The connection to the server localhost:8080 was refused - did you specify the right host or port?
?。
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
然后執行這個命令初始化。
kubectl apply -n kube-system -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
成功的話會提示:
serviceaccount/weave-net created clusterrole.rbac.authorization.k8s.io/weave-net created clusterrolebinding.rbac.authorization.k8s.io/weave-net created role.rbac.authorization.k8s.io/weave-net created rolebinding.rbac.authorization.k8s.io/weave-net created daemonset.apps/weave-net created
3,加入集群
再創建一個新的節點(另一臺服務器),執行?hostname -i
?查看 ip。
在第二個節點中,執行命令,加入集群。請替換命令中的?192.168.0.8
?為正確的 master 節點 的 ip。
kubeadm join 192.168.0.8:6443 --token q25z3f.v5uo5bphvgxkjnmz \ --discovery-token-ca-cert-hash sha256:0496adc212112b5485d0ff12796f66b29237d066fbc1d4d2c5e45e6add501f64
接著新建第二第三個 node,執行上面的?kubeadm join
?命令,加入集群。
如果出現?failed to parse kernel config: unable to load kernel module
,說明 docker 版本太高,需要降級。
查看 docker 版本:yum list installed | grep docker
?和?docker version
。
降級 docker 版本。
dnf remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
dnf -y install dnf-plugins-core
dnf install docker-ce-18.06.3.ce-3.el7 docker-ce-cli containerd.io
不行的話就按照?https://docs.docker.com/engine/install/centos/?安裝。
注意,docker version
?會看到 client 和 server 版本,兩者的版本號可能不一致。
清除環境
如果步驟做錯了或者想重來,可以執行?kubeadm reset [flags]
?命令。
注:只執行?kubeadm reset
?命令無效。
[flags]
?有四種類型:
preflight Run reset pre-flight checks update-cluster-status Remove this node from the ClusterStatus object. remove-etcd-member Remove a local etcd member. cleanup-node Run cleanup node.
我們需要執行:
kubeadm reset cleanup-node kubeadm reset
原文鏈接:https://www.cnblogs.com/whuanle/p/14679590.html
相關推薦
- 2022-08-16 QT布局管理詳解QVBoxLayout與QHBoxLayout及QGridLayout的使用_C 語
- 2022-05-22 C#中深拷貝和淺拷貝的介紹與用法_C#教程
- 2022-10-08 如何在React項目中引入字體文件并使用詳解_React
- 2022-09-12 ios開發UITableViewCell圖片加載優化詳解_IOS
- 2022-06-08 并發編程--CountdownLatch && CyclicBarrier
- 2022-07-30 python?replace?空格數據處理的實現_python
- 2022-06-16 golang?beego框架環境搭建過程_Golang
- 2022-07-10 SQL語句優化詳解
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支