K8S集群的安裝(更新)
之前結合實際經驗寫過一篇k8s集群安裝的文章,但是針對的是老版本的安裝方法,k8s的組件如今全部采用pod的方式運行,所以又重新安裝了
之前結合實際經驗寫過一篇k8s集群安裝的文章,但是針對的是老版本的安裝方法,k8s的組件如今全部采用pod的方式運行,所以又重新安裝了本地的集群,現將集群的安裝過程整理記錄如下。
集群規劃如下
另外還有一臺節點v04作為docker的私庫,和集群的外掛磁盤所在節點。操作系統使用centos7。
首先集群的master節點要求必須2核以上,所以如果是使用vmware或者virtualbox,需要注意cpu的核數。
安裝前的準備
1. 關閉防火墻
2. 關閉selinux
3. 關閉swap,注釋掉 fstab中的 /dev/mapper/centos-swap
swapoff -a nvi /etc/fstab n#/dev/mapper/centos-swap swap swap defaults 0 0
4. 修改sysctl的配置, 將net.bridge.bridge-nf-call-iptables設置為1
vi /etc/sysctl.conf nnet.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1
安裝docker
確保所有節點都要安裝docker,因為現在k8s的所有組件都是基于pod的,所以即便是master節點,雖然它作為集群的管理節點不會運行我們自己的pod,但是k8s自己本身的組件,例如etcd,apiserver等都是運行在pod中,所以所有節點都需要安裝docker。
首先獲得docker的yum源,由于連接外網很不方便,而且速度慢,所以我們使用阿里云的yum源,包括后面下載docker鏡像,使用的也是阿里源的源。然后安裝docker-ce,并設置成開機啟動。
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repon yum install docker-ce nsystemctl enable docker nsystemctl start docker
配置自己的私有倉庫(如果不適用私庫,可以略過此步)
由于docker私庫要求使用https,為了方便使用,我們使用insecure-registries。
編輯 /etc/docker/daemon.json, 加入下列內容
{ "insecure-registries":["<ip>:5000"] }
其中ip為私庫ip,5000端口是默認的私庫端口,如果是自定義的,改成相應的端口。
安裝 kubelet、kubeadm 和 kubectl
首先設置yum源,添加阿里云為yum源
[kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
然后安裝kubectl,kubeadm,kubelet,并設置kubelet的開機啟動
yum install kubectl kubeadm kubelet nsystemctl enable kubelet.service
kubectl是k8s的命令行工具
kubelet是用于啟動pod和容器等
kubeadm用于啟動集群,初始化集群
以上步驟需要在所有節點上執行,下面開始分別安裝master和node節點。
安裝master節點
初始化master節點
在master節點上執行以下命令進行初始化
kubeadm init --pod-network-cidr=10.244.0.0/16
--pod-network-cidr=10.244.0.0/16 是 k8s 的網絡插件所需要用到的配置信息,用來給 node 分配子網段。我們使用的的網絡插件是 flannel。
執行初始化之前會先做一些檢查例如cpu核數等等。如果出現error,要先解決掉error然后重新運行init命令,檢查通過后,會開始運行kubeadm的初始化操作,會從官網下載很多image,由于國內網絡連接官網很慢,很可能會下載失敗,所以我們可以使用阿里云的image,先下載下來,然后再給下載下來的鏡像重新打上官網的標簽,這樣再執行初始化的時候就可以使用下載下來的本地鏡像。運行以下命令來下載鏡像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.0 ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.0 k8s.gcr.io/kube-apiserver:v1.19.0 ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0 ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.0 ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1 ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0 ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.0 k8s.gcr.io/kube-controller-manager:v1.19.0 ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.0 k8s.gcr.io/kube-scheduler:v1.19.0 ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0 k8s.gcr.io/kube-proxy:v1.19.0 ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2 ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.9-1 k8s.gcr.io/etcd:3.4.9-1n docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0
kubeadm運行完成后,會提示其他節點加入集群的方法,截圖樣例如下(由于安裝時忘記截圖,在網上找了一個截圖的樣例),如果想要其他節點加入集群根據提示操作即可

master節點的配置
k8s不推薦使用root用戶操作,所以創建一個有root權限的用戶,然后賦予root權限
添加用戶k8s并設置密碼 nuseradd k8s passwd k8s n使用戶具有root權限 nchmod 777 /etc/sudoers nvi /etc/sudoers nchmod 440 /etc/sudoers
切換至k8s賬戶,執行以下命令,即安裝完kubeadm后提示的步驟
mkdir -p $HOME/.kube nsudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config nsudo chown $(id -u):$(id -g) $HOME/.kube/config
運行以下命令安裝pod網絡(安裝flannel),使pod可以相互通信
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
至此,master節點安裝完成
安裝Node節點
在node節點上執行以下命令,即kubeadm安裝完提示的命令,加入集群
kubeadm join 10.0.2.5:6443 --token vc1pde.0f1zq9w3osvx8on7 --discovery-token-ca-cert-hash sha256:b4b4c0661363ff0cb95eb4d68bfce605da64a563a3e834827784c08fbdc7f8ba
安裝需要的鏡像
在每一個 node 節點上我們還需要下載 http://quay.io/coreos/flannel:v0.11.0-amd64、http://k8s.gcr.io/pause 和 http://k8s.gcr.io/kube-proxy 這三個鏡像,第一個可以直接下載,后兩個仍然采用先從國內源下載然后打標簽的方式
docker pull quay.io/coreos/flannel:v0.12.0-amd64 ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 ndocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0 ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.0 k8s.gcr.io/kube-proxy:v1.19.0 ndocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
可以在master節點上運行命令 kubectl get nodes查看集群節點的狀態。
至此node節點也安裝完成。
其他設置
這里主要是設置nfs,我們使用nfs來做volume的映射。找一臺vm做nfs的server,在集群的所有節點上安裝nfs服務。并設置開機啟動
yum install rpcbind nfs-utils nsystemctl enable rpcbind.service nservice rpcbind start
在server節點做如下配置
# cat /etc/exports n/data/k8s/ 192.168.56.0/24(sync,rw,no_root_squash)
/data/k8s/ 是掛載的目錄
192.168.56.0/24 是允許掛載的客戶端ip的所在網段
synct同時將數據寫入到內存與硬盤中,保證不丟失數據
rwt讀寫
no_root_squasht當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員
在客戶端使用showmount -e 192.168.56.5查看是否可以正常掛載,顯示如下證明可以正常掛載
# showmount -e 192.168.56.5 nExport list for 192.168.56.5: n/data/k8s 192.168.56.0/24
至此k8s的集群的安裝已經完成。
上一篇:K8s 安裝過程中遇到的問題
下一篇:ZHS的日記簿








