集群方案:
發行版:ubuntu16.04
內核:4.4.0-62-generic·
版本:Kubernetes: 1.14.0·
網絡方案:flannel network
通常我們安裝的系統默認都是啟用交換內存的,但是kubelet(1.8版本開始)是不支持交換內存。
swapoff -a
編輯/etc/hostname并添加:
kube-master
將以下行添加到/etc/hosts:
192.168.0.2 kube-master
192.168.0.3 kube-worker-1
192.168.0.4 kube-worker-2
完成以上系統環境配置后,建議重啟一下服務器
Docker安裝有很多,以下是其中一種:
1.刪除系統上可能存在的舊版Docker:
sudo apt remove docker docker-engine docker.io
2.確保您擁必要的軟件包以允許使用Docker的存儲庫:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
3.添加Docker的GPG密鑰:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4.驗證GPG密鑰的指紋:
sudo apt-key fingerprint 0EBFCD88
5.添加stableDocker存儲庫:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
6.更新軟件包索引并安裝Docker CE:
sudo apt updates
sudo apt install docker-ce
7.將限的Linux用戶帳戶添加到該docker組:
sudo usermod -aG docker $USER
8.通過運行內置的“Hello World”程序檢查安裝是否成功:
docker run hello-world
9.安裝kubeadm,kubectl和kubelet
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -e
echo 'deb http://apt.kubernetes.io/ kubernetes-xenial main' | sudo tee /etc/apt/sources.list.d/kubernetes.lists
sudo apt updates
sudo apt install -y kubelet kubeadm kubectl
1.在初始化的時候會在https://dl.k8s.io上拖拉鏡像,由于我是部署在國內的節點,所以就需要手動拉鏡像并修改下標簽。
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.14.1
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd-amd64:3.3.10
docker pull coredns/coredns:1.3.1
docker tag docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1 k8s.gcr.io/kube-apiserver:v1.14.1
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1
docker tag docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.14.1 k8s.gcr.io/kube-scheduler:v1.14.1
docker tag docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1
docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag docker.io/mirrorgooglecontainers/etcd-amd64:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag docker.io/coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker rmi mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1
docker rmi mirrorgooglecontainers/kube-controller-manager-amd64:v1.14.1
docker rmi mirrorgooglecontainers/kube-scheduler-amd64:v1.14.1
docker rmi mirrorgooglecontainers/kube-proxy-amd64:v1.14.1
docker rmi mirrorgooglecontainers/pause:3.1
docker rmi mirrorgooglecontainers/etcd-amd64:3.3.10
docker rmi coredns/coredns:1.3.1
2.初始化master節點
kubeadm init --pod-network-cidr=10.0.0.0/16 --apiserver-advertise-address=0.0.0.0
以上輸出就是初始化完畢了,注意:保留kubeadm join….這句信息,后面節點加入使用。
3.在主節點上,配置kubectl工具:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4.檢查節點的狀態kubectl get nodes。輸出類似于:
這里可以看出master的狀態是NotReady,這是由于還沒有安裝cni插件
5.安裝flannel network add-on:--CNI
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
然后現在重新kubectl get nodes檢查就會發現是Ready狀態了。
6.使用kubectl get pods --all-namespaces以查看在kube-system命名空間中創建的pod,當kube-system的狀態都是running才算是初始化完成了。
當出現某個pod的狀態異常時,可以使用kubectl describe pod $namespace來查看錯誤的原因
1.kubeadm join使用初始化輸出的信息
2.在主節點上,用于kubectl查看從節點現在是否已就緒
文章來自公眾號:睿江云計算
睿江云官網鏈接:https://www.eflycloud.com/home?from=RJ0024
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。