安裝kubernets環境破費周折,特此記錄整個過程
第一步: VirtualBox安裝CentOS7 64系統。用什麼環境無所謂
(1)系統下載地址如下。下載CentOS-7-x86_64-Minimal-1908.iso就可以,DVD或者Everything太大了,用不着
http://mirrors.aliyun.com/centos/7/isos/x86_64/
(2)安裝完成後,用系統賬號登錄進去,網絡不通,我的機器上是,需要手動把網絡配置修改爲橋接模式,如下圖。配置修改後重啓機器。
(3)再次登錄進去,執行命令dhclient
爲本機動態分配一個ip地址,發現這個ip地址跟宿主機是一個號段的,先不管只要能訪問網絡就行。執行ip addr
命令就可以看到分配的地址了。配置啓動自動化獲取IP地址,修改文件/etc/sysconfig/network-scripts/ifcfg-enp0s3
設置裏面的ONBOOT=yes
(4)yum鏡像配置。默認官方的軟件倉庫,在國內使用太慢了,國內的鏡像地址可選擇性很多。具體替換鏡像的方式如下:
# 1. 進入yum倉庫配置未知
cd /etc/yum.repos.d/
# 2. 備份官方鏡像
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 3. 下載163鏡像文件。如果發現wget命令沒有安裝,使用yum install wget先安裝wget
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 4. 生成緩存
yum makecache
# 5. update一下
yum -y update
# OK Done。
使用阿里雲的鏡像也是一樣的,把上面的第3不下載163鏡像換成下載阿里雲鏡像既可以。
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
至此虛擬機已經安裝完畢。
二、安裝Docker
官方教程在此教程關鍵步驟摘錄於此
# 安裝必須依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 設置docker穩定版倉庫
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安裝docker
sudo yum install docker-ce docker-ce-cli containerd.io
# 設置docker 開機啓動,並啓動docker
sudo systemctl enable docker && systemctl start docker
# 測試hello_world鏡像
sudo docker run hello-world
# 你會發現上面需要login,沒有什麼好說的,使用自己在https://hub.docker.com上註冊的賬號和地址即可
docker login
# 再次測試hello-wold
sudo docker run hello-world
已經安裝完成,但是在測試hello-world時會發現特別慢,時因爲docker的官方倉庫在國內訪問同樣是非常慢的,因此我們也需要綁定國內的鏡像。國內的鏡像有http://hub-mirror.c.163.com
https://registry.docker-cn.com
以及阿里雲的https://xxxxxx.mirror.aliyuncs.com
阿里雲的配置參考配置阿里雲私有鏡像加速器
# 配置鏡像地址
echo '{
"registry-mirrors":["http://hub-mirror.c.163.com"]
}' > /etc/docker/daemon.json
# 配置之後重啓docker
systemctl restart docker
三、安裝kubernetes Master以v1.14.2爲例。因爲學習是使用的是《Kubernets權威指南(第四版)》
(1)安裝kubeadmin和相關工具
# 配置國內阿里雲kubernets鏡像
cd /etc/yum.repos.d/
touch kubernetes.repo
# 將下面的內容複製到kubernetes.repo文件中
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
enabled=1
# 安裝 kubelet kubeadm kubectl
yum install -y kubelet-1.14.2 kubeadm-1.14.2 kubectl-1.14.2 --disableexcludes=kubernetes
# 啓動kubelet
systemctl enable kubelet && systemctl start kubelet
(2)下載kubernets鏡像
注意配置文件中的imageRepository, 我使用的是阿里雲的鏡像,不指定這個參數會使用谷歌的k8s.gcr.io,在國內無法使用
# 構造配置文件如下
touch init-config.yaml
#文件內容如下,請自行復制
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
imageRepository: registry.aliyuncs.com/google_containers
kubernetesVersion: v1.14.0
networking:
podSubnet: "192.168.0.0/16"
# 下載鏡像
kubeadm config images pull --config=init-config.yaml
# 會下載得到如下鏡像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.aliyuncs.com/google_containers/kube-proxy v1.14.0 5cd54e388aba 8 months ago 82.1MB
registry.aliyuncs.com/google_containers/kube-scheduler v1.14.0 00638a24688b 8 months ago 81.6MB
registry.aliyuncs.com/google_containers/kube-apiserver v1.14.0 ecf910f40d6e 8 months ago 210MB
registry.aliyuncs.com/google_containers/kube-controller-manager v1.14.0 b95b1efa0436 8 months ago 158MB
registry.aliyuncs.com/google_containers/coredns 1.3.1 eb516548c180 10 months ago 40.3MB
hello-world latest fce289e99eb9 11 months ago 1.84kB
registry.aliyuncs.com/google_containers/etcd 3.3.10 2c4adeb21b4f 12 months ago 258MB
registry.aliyuncs.com/google_containers/pause 3.1 da86e6ba6ca1 23 months ago 742kB
(3) 初始化Master
# 初始化, 仍然使用下載鏡像是創建的配置文件
kubeadm init --config=init-config.yaml
等待安裝安裝成功後,會打印如下信息。得到如下截圖後,說明Master安裝完成,接着安裝Node,並加入到Master。
(4)安裝Node
重新配置一臺虛擬機,安裝docker, 以及kublet, kubeadm工具。一切準備工作完成後,開始如下的流程將Node加入到Master中
# 啓動docker和kubelet 並配置開機啓動
sudo systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
join到master
# 創建配置文件, join-config.yaml,內容如下。其中ip地址是剛剛啓動成功的Master的地址
apiVersion: kubeadm.k8s.io/v1beta1
kind: JoinConfiguration
discovery:
bootstrapToken:
apiServerEndpoint: 192.168.*.*:6443
token: 6ch5h1.u7527dh7nqzeqz32
unsafeSkipCAVerification: true
tlsBootstrapToken: 6ch5h1.u7527dh7nqzeqz32
#join, 執行如下命令
kubeadm join --config=join-config.yaml
執行之後會得到如下圖的顯示
但很大的可能是執行上面的join命令後,一直卡着,說明Master機器上有防火牆,可以上Master機器將防火牆關閉,再執行join命令。centos防火牆配置
# 關閉防火牆
systemctl stop firewalld
# 也可以吧6443的端口加入防火牆,然後重新加載防火牆配置
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --reload
(5) 安裝CNI網絡插件
# 執行如下命令
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 |tr -d '\n')"
(6) 驗證是否安裝成功
kubectl get pods --all-namespaces