如何使用Kubeadm快速搭建Kubernetes

這篇文章主要講解了“如何使用Kubeadm快速搭建Kubernetes”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何使用Kubeadm快速搭建Kubernetes”吧!

創(chuàng)新互聯(lián)是一家專業(yè)提供臨邑企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為臨邑眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

##版本說明 ##

  1. kubernetes1.6

  2. docker1.12.6

環(huán)境準(zhǔn)備

192.168.0.51 master 192.168.0.52 minion1 192.168.0.53 minion2

##安裝docker ##

# 安裝yum-utils 管理yum repository及擴(kuò)展包的工具
yum install -y yum-utils   
# 增加docker repository
yum-config-manager \
    --add-repo \
    https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
# 下載包信息到本地
yum makecache fast
# 安裝docker-1.12.6
yum install -y docker-engine-1.12.6
# 啟動docker服務(wù)
systemctl start docker
# 開機(jī)啟動docker
systemctl enable docker

##系統(tǒng)配置 ## 創(chuàng)建/etc/sysctl.d/k8s.conf文件,內(nèi)容為:

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

執(zhí)行

sysctl -p /etc/sysctl.d/k8s.conf

在/etc/hostname中修改各節(jié)點(diǎn)的hostname,在/etc/hosts中設(shè)置hostname對應(yīng)非lo回環(huán)網(wǎng)卡ip:

192.168.0.51 master
192.168.0.52 minion1
192.168.0.53 minion2

##安裝kubeadm和kubelet ## 安裝kubeadm和kubelet需要技術(shù)梯子,添加以下 1、通過修改/etc/hosts文件添加IP *.google.com,比如

216.58.200.33  gcr.io
216.58.200.33  www.gcr.io
216.58.200.33  cloud.google.com
216.58.200.33  packages.cloud.google.com
216.58.200.33  console.cloud.google.com
216.58.200.33  status.cloud.google.com
216.58.200.33  ssh.cloud.google.com

2、:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

輸入如下內(nèi)容:

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF

安裝kubelet,kubeadm,kubectl

yum -y install socat kubelet-1.6.1 kubeadm-1.6.1 kubectl-1.6.1
systemctl enable kubelet.service

##初始化集群 ## 上面的步驟每個(gè)node都需要執(zhí)行,此步驟只在Master Node 執(zhí)行。選擇192.168.0.51這臺作為Master Node,在此機(jī)器上

kubeadm init --kubernetes-version=v1.6.1 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.0.51

選擇flannel作為網(wǎng)絡(luò)插件,所以上面的命令指定--pod-network-cidr=10.244.0.0/16。初始化遇到問題時(shí),使用下面的命令清理然后再初始化:

kubeadm reset
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/

不出意外Master Node 已初始化成功。此時(shí)查看節(jié)點(diǎn)狀態(tài) kubectl get nodes 會報(bào) The connection to the server localhost:8080 was refused - did you specify the right host or port? 我們查看kube-apiserver的監(jiān)聽端口

[root@kube-master ~]# netstat -nltp | grep apiserver
tcp6       0      0 :::6443                 :::*                    LISTEN      5430/kube-apiserver

我們發(fā)現(xiàn)apiserver只監(jiān)聽了6443端口,但是我們需要使用kubectl訪問apiserver,so 在~/.bash_profile追加下面的環(huán)境變量

export KUBECONFIG=/etc/kubernetes/admin.conf
# 使環(huán)境變量生效
source ~/.bash_profile

現(xiàn)在再試試kubectl get nodes 吧!

##安裝Pod Network ## 安裝flannel network add-on 分兩種情況

1、只有一張網(wǎng)卡 直接執(zhí)行

kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
kubectl apply -f  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

2、有多張網(wǎng)卡 執(zhí)行

kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml

執(zhí)行第二步有所不同,下載https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ,flanneld啟動參數(shù)加上***--iface=[iface-name]***

......
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: kube-flannel-ds
......
containers:
      - name: kube-flannel
        image: quay.io/coreos/flannel:v0.7.0-amd64
        command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr", "--iface=eth2" ]
......

eth2這里換成自己的網(wǎng)卡名即可。創(chuàng)建flanneld

kubectl create -f {修改后的kube-flannel.yml路徑}
# 確保所有的Pod都處于Running狀態(tài)
kubectl get pod --all-namespaces -o wide

##使Master Node 參與工作負(fù)載 ## 一般不建議將Master Node參與負(fù)載,此時(shí)只為測試環(huán)境方便。

# 使Master Node參與工作負(fù)載
kubectl taint nodes --all  node-role.kubernetes.io/master-

##測試 ##

kubectl run curl --image=radial/busyboxplus:curl -i --tty
If you don't see a command prompt, try pressing enter.
[ root@curl-57077659-xgckw:/ ]$

進(jìn)入后執(zhí)行nslookup kubernetes.default確認(rèn)DNS解析正常。

[ root@curl-57077659-xgckw:/ ]$ nslookup kubernetes.default
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      kubernetes.default
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local

如果正常解析,就大功告成啦!

# 刪除curl這個(gè)Pod
kubectl delete deploy cutl

##向集群中添加節(jié)點(diǎn) ## 根據(jù)上面的步驟安裝docker,kubelet套件。 在Master Node節(jié)點(diǎn)上執(zhí)行

# 獲取token
kubeadm token list

在minion1上執(zhí)行

# 關(guān)閉防火墻
systemctl stop firewalld
# 禁止防火墻開機(jī)啟動
systemctl disable firewalld
# 添加節(jié)點(diǎn)
kubeadm join --token ${token} ${master-ip}:6443

看到如下內(nèi)容就說明我們已經(jīng)成功向集群中添加節(jié)點(diǎn)了!nice

kubeadm join --token a432c6.078b144b659c82b4 192.168.0.51:6443
-----  略略略  ----
Node join complete:
* Certificate signing request sent to master and response
  received.
* Kubelet informed of new secure connection details.

Run 'kubectl get nodes' on the master to see this machine join.

在Master Node上執(zhí)行kubectl get nodes 確保所有的node是Ready的狀態(tài)。

##問題總結(jié) ## Q:Minion Node一直處于notReady狀態(tài)?

A:主要有兩個(gè)原因:

1、啟動kubelet的時(shí)候,會pull兩個(gè)鏡像(gcr.io/**),因?yàn)镚FW的存在,不能成功pull,所以要自己找到這兩個(gè)docker鏡像

gcr.io/google_containers/pause-amd64:3.0
gcr.io/google_containers/kube-proxy-amd64:v1.6.1

2、 使用Kubeadm工具搭建的Kubernetes集群,已經(jīng)默認(rèn)集成了安全策略,所以要將Master Node節(jié)點(diǎn)/etc/kubernetes/pki下的所有文件復(fù)制到Minion Node相同目錄下一份。所以在Master Node上執(zhí)行

scp /etc/kubernetes/pki/* root@{minion-ip}:/etc/kubernetes/pki

感謝各位的閱讀,以上就是“如何使用Kubeadm快速搭建Kubernetes”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何使用Kubeadm快速搭建Kubernetes這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

新聞名稱:如何使用Kubeadm快速搭建Kubernetes
轉(zhuǎn)載來于:http://muchs.cn/article10/jpdego.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站微信公眾號、網(wǎng)站設(shè)計(jì)公司、自適應(yīng)網(wǎng)站、網(wǎng)站收錄、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)