本博客搭建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: |
- 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
|
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 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
|
查看節點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 -
|
查看節點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/
|
- 配置鏡像
- 安裝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節點,再次使用以下命令查看節點數量是不是增加了一個呢
至此k8s集群就搭建完成了。

本文出自http://zhixiang.org.cn,轉載請保留。