在CentOS7上搭建Kubernetes


來源

中文教程 http://blog.51cto.com/devingeng/2096495?from=singlemessage

官方文檔 https://kubernetes.io/docs/setup/independent/install-kubeadm/

准備

1 centOS 7

2 以root登陸(建議)

3 關閉防火牆

關閉firewall,iptables:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動

firewall-cmd --state #查看默認防火牆狀態(關閉后顯示not running,開啟后顯示running)

4 關閉SElinux

暫時關閉:
setenforce 0
永久關閉:
vim /etc/selinux/config打開selinux配置文件

找到SELINUX=參數

參數可選(enforcing、permissive、disabled)

disabled即為關閉SElinux

5 關閉swap

swapoff -a

6 配置系統內核參數使流過網橋的流量也進入iptables/netfilter框架中,開啟ipv4的forwarding

在/etc/sysctl.conf中添加以下配置:

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1 
net.ipv4.ip_forward=1

如果報出參數不存在,則執行modprobe br_netfilter即可

並執行sysctl -p

7 配置阿里雲鏡像

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF
yum -y install epel-release
yum clean all
yum makecache

安裝相關工具

以下內容於51CTO博客作者Devin的原創作品整理而來,如需轉載,請注明出處

1 安裝docker以及kubeadm相關工具

yum -y install docker kubelet kubeadm kubectl

2 啟動docker以及kubeadm服務

systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet

3 下載K8S相關鏡像

因為無法直接訪問gcr.io下載鏡像,所以需要配置一個國內的容器鏡像加速器:

登錄 https://cr.console.aliyun.com/

在頁面中找到並點擊鏡像加速按鈕,即可看到屬於自己的專屬加速鏈接,選擇Centos版本后即可看到配置方法。

解決完加速器的問題之后,開始下載k8s相關鏡像,下載后將鏡像名改為k8s.gcr.io/開頭的名字,以便kubeadm識別使用:(注意將版本號替換為當前安裝的版本)

#!/bin/bash
images=(kube-proxy-amd64:v1.11.0 kube-scheduler-amd64:v1.11.0 kube-controller-manager-amd64:v1.11.0 kube-apiserver-amd64:v1.11.0
etcd-amd64:3.2.18 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.8 k8s-dns-kube-dns-amd64:1.14.8
k8s-dns-dnsmasq-nanny-amd64:1.14.8 coredns:1.1.3)
for imageName in ${images[@]} ; do
  docker pull keveon/$imageName
  docker tag keveon/$imageName k8s.gcr.io/$imageName
  docker rmi keveon/$imageName
done

4 初始化安裝K8S Master

下載完成后,執行kubeadm init:

kubeadm init --kubernetes-version=v1.11.0 --pod-network-cidr=192.168.0.0/16

執行過程中可能會出現版本問題,此時自行按照版本提示使用docker pull ...獲得相應鏡像並改名即可

上面的命令大約需要1分鍾的過程,期間可以觀察下tail -f /var/log/message日志文件的輸出,掌握該配置過程和進度。上面最后一段的輸出信息保存一份,后續添加工作節點還要用到。

類似於

kubeadm join 10.211.55.10:6443 --token 1xuwcb.oijnat5tkla6r384 --discovery-token-ca-cert-hash sha256:bcbf083a3fab2422ae0615b421d71a2275f2a974746989e59672a100a071ba30

5.配置kubectl認證信息(Master節點操作)

對於非root用戶

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

對於root用戶

export KUBECONFIG=/etc/kubernetes/admin.conf

也可以直接放到~/.bash_profile

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

6.安裝網絡組件

這里我們使用Calico:

kubectl apply -f \
https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml

然后使用watch kubectl get pods --all-namespaces檢查coreDNS運行狀態,如果為running則可以繼續

7.在本機運行pods

執行
kubectl taint nodes --all node-role.kubernetes.io/master-
允許master上調度pods

搭建新的NODE並join進集群

准備

首先安裝新的虛擬機並安裝CentOS,然后按照本文第一部分安裝kubeadm和docker等組件

join

將master init后輸出的提示在新機器上執行
kubeadm join 10.211.55.10:6443 --token 1xuwcb.oijnat5tkla6r384 --discovery-token-ca-cert-hash sha256:bcbf083a3fab2422ae0615b421d71a2275f2a974746989e59672a100a071ba30
即可加入集群

默認token的有效期為24小時,當過期之后,該token就不可用了。解決方法如下:

重新生成新的token

kubeadm token create

kubeadm token list

獲取ca證書sha256編碼hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

節點加入集群
kubeadm join --token aa78f6.8b4cafc8ed26c34f --discovery-token-ca-cert-hash sha256:...

關閉node

在master執行

kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
kubectl delete node <node name>

在該node執行
kubectl reset

即可關閉該node


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM