本博客搭建k8s集羣1.12.2版本
1. 準備2臺以上最低2核4G的服務器
2. 關閉機器的防火牆
1 2 |
systemctl disable firewalld systemctl stop firewalld |
生產環境下建議不要關閉防火牆,只開放k8s所用的端口
3. 配置docker和k8s倉庫爲阿里雲鏡像倉庫
首先選擇一臺性能比較好的機器作爲主節點
1 |
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
- vim /etc/yum.repos.d/ubernetes.repo
1 2 3 4 5 6 |
[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/yum-key.gpg enabled=1 |
1 2 3 |
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg rpm --import rpm-package-key.gpg yum repolist |
4. 安裝docker和kubelet
1 |
yum install kubeadm-1.12.2-0.x86_64 docker-ce-18.06.0.ce kubelet-1.12.2-0.x86_64 |
這裏指定了docker和kubelet的版本,如果不指定的話默認下載最新的版本,如果你的服務器可以上Google的話可以選擇執行以下命令下載最新版
1 |
yum install kubeadm docker-ce kubelet |
5. 下載k8s鏡像
這裏分爲兩種場景
能上Google的同學看這個
- vim /usr/lib/systemd/system/docker.service 增加如下配置
1 2 |
Environment="HTTPS_PROXY=http://www.ik8s.io:10080" Environment="NO_PROXY=127.0.0.0/8,172.0.0.0/16" |
- 加載配置文件
1 |
systemctl daemon-reload |
- 設置docker開機啓動並啓動docker
1 2 |
systemctl enable docker systemctl start docker |
不能的同學看這個
- 設置docker開機啓動並啓動docker
1 2 |
systemctl enable docker systemctl start docker |
- 下載k8s鏡像
1 2 3 4 5 6 |
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.12.2 docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.12.2docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.12.2 docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.12.2 docker pull mirrorgooglecontainers/pause:3.1 docker pull mirrorgooglecontainers/etcd-amd64:3.2.24 docker pull coredns/coredns:1.2.2 |
- 鏡像tag更新
因爲來自mirrorgooglecontainers或者coredns的鏡像k8s是不認識的,所以我們需要修改一下上方下載的鏡像的tag
1 2 3 4 5 6 7 8 9 10 11 12 13 |
docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.12.2 k8s.gcr.io/kube-apiserver-amd64:v1.12.2 docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.12.2 k8s.gcr.io/kube-controller-manager-amd64:v1.12.2 docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.12.2 k8s.gcr.io/kube-scheduler-amd64:v1.12.2 docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.12.2 k8s.gcr.io/kube-proxy-amd64:v1.12.2 docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1 docker tag mirrorgooglecontainers/etcd-amd64:3.2.24 k8s.gcr.io/etcd-amd64:3.2.24 docker tag coredns/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2 |
6. 驗證網絡及k8s依賴
- 驗證網絡
1 2 |
cat /proc/sys/net/bridge/bridge-nf-call-ip6tables cat /proc/sys/net/bridge/bridge-nf-call-iptables |
查看兩條命令是否返回的都是1
- 驗證k8s依賴
1 |
rpm -ql kubelet |
執行以上命令看屏幕結果是否如下
1 2 3 4 |
/etc/kubernetes/manifests #清單目錄 /etc/sysconfig/kubelet #配置文件 /etc/systemd/system/kubelet.service /usr/bin/kubelet #主程序 |
- 設置k8s開啓啓動
1 |
systemctl enable kubelet |
7. 初始化k8s
1. 系統檢查
1 |
kubeadm init --kubernetes-version=v1.12.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 |
注意如果使用最新版本的話不需要使用–kubernetes-version參數
命令執行後k8s會進行一系列的檢查,比如說:
- Linux 內核的版本必須是否是 3.10 以上?
- Linux Cgroups 模塊是否可用?
- 機器的 hostname 是否標準?在 Kubernetes 項目裏,機器的名字以及一切存儲在 Etcd 中的 API 對象,都必須使用標準的 DNS 命名(RFC 1123)。
- 用戶安裝的 kubeadm 和 kubelet 的版本是否匹配?
- 機器上是不是已經安裝了 Kubernetes 的二進制文件?
- Kubernetes 的工作端口 10250/10251/10252 端口是不是已經被佔用?
- ip、mount 等 Linux 指令是否存在?
- Docker 是否已經安裝?
- ……
檢查結束以後如果沒問題的話名字執行結束最後會有這樣的一條指令出現
1 |
kubeadm join 172.26.15.165:6443 --token ns4kps.j8cuqwf78emp5a5b --discovery-token-ca-cert-hash sha256:b71b7e52c318959bab3f05f02f6fe51d6396d8c54ea6849ec7556927d1c6c88a |
這個就是node節點需要加入主節點時所需要的token,很重要,記下來,一會會用到
2. 系統檢查
1 2 |
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config |
1 |
kubectl get nodes |
查看節點status是否爲NotReady
3. 安裝flannel
1 2 |
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml curl -sSL "https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml?raw=true" | kubectl create -f - |
1 |
kubectl get nodes |
查看節點status是否爲Ready
至此master節點的配置已經完成了。
8. 配置節點服務器
- 拷貝master中的一些配置到節點服務器
1 2 |
scp /etc/yum.repos.d/CentOS-Base.repo docker-ce.repo kubernetes.repo 服務器ip:/etc/yum.repos.d/ scp /etc/sysconfig/kubelet 服務器ip:/etc/sysconfig/ |
- 配置鏡像
1 2 |
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg rpm --import rpm-package-key.gpg |
- 安裝docker
同上方第四步
1 |
yum install kubeadm-1.12.2-0.x86_64 docker-ce-18.06.0.ce kubelet-1.12.2-0.x86_64 |
- 啓動docker和kubelet並設置開啓啓動
1 2 |
systemctl start docker systemctl enable docker kubelet |
- 加入集羣管理
使用上方安裝master結束後記住的命令加入到集羣中
1 |
kubeadm join 172.26.15.165:6443 --token ns4kps.j8cuqwf78emp5a5b --discovery-token-ca-cert-hash sha256:b71b7e52c318959bab3f05f02f6fe51d6396d8c54ea6849ec7556927d1c6c88a |
- 驗證
切換到master節點,再次使用以下命令查看節點數量是不是增加了一個呢
1 |
kubectl get nodes |
至此k8s集羣就搭建完成了。
本文出自http://zhixiang.org.cn,轉載請保留。