iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 3
0

今天時間不夠,當個小孬孬用官方推薦的佈署工具 kubeadm 來佈署

佈署環境

  • master: Centos 7.6 /192.168.8.151
  • node1 : Centos 7.6 /192.168.8.152
  • node2 : Centos 7.6 /192.168.8.153

用虛擬機裝

先設好固定ip後

開始安裝docker

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce-18.06.1.ce-3.el7

這邊如果遇到error 檢查一下剛才設定固ip時
是否忘了設定dns 造成域名無法解析

#ifcfg-enp0s3 是我的網卡名稱
sudo nano /etc/sysconfig/network-script/ifcfg-enp0s3

進入後新增GOOGLE DNS 8.8.8.8 與 8.8.4.4
https://ithelp.ithome.com.tw/upload/images/20190919/20110579FnaLdL8YZC.png

sudo /etc/init.d/network restart

這時安裝docker 就不會錯了
https://ithelp.ithome.com.tw/upload/images/20190919/20110579ZqJiBCHZmt.png

執行


yum install -y kubelet kubeadm kubectl

如果遇到error

https://ithelp.ithome.com.tw/upload/images/20190919/20110579HyICGolTby.png

先執行

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

https://ithelp.ithome.com.tw/upload/images/20190919/20110579Kmd68AlUZA.png

再執行

yum install -y kubelet kubeadm kubectl

就可以了

https://ithelp.ithome.com.tw/upload/images/20190919/20110579bxpkFCkJX0.png

使用下面這個指令可以查看kubernetes defalut 的配置

kubeadm config print init-defaults
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 1.2.3.4
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: master
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
scheduler: {}

觀察一下,預設他就配置這個節點為master了
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: master
taints:

  • effect: NoSchedule
    key: node-role.kubernetes.io/master

此時我們先不改其設定,只加入一個參數讓之後flannel 使用網路設定

kubeadm init --pod-network-cidr 10.244.0.0/16 --kubernetes-version v1.16.0

等待良久,取決於網路速度
終於安裝好了! 並且吐出訊息教學如何加入集群

https://ithelp.ithome.com.tw/upload/images/20190919/201105794fShVpFTuJ.png)

至此如果使用

kubectl get node

會發現master 是NotReady 狀態!!

https://ithelp.ithome.com.tw/upload/images/20190920/20110579hJ1R1TVcrw.png

指令查看log

journalctl -f -u kubelet
Sep 19 14:19:13 master kubelet[18137]: W0919 14:19:13.171914   18137 cni.go:237] Unable to update cni config: no networks found in /etc/cni/net.d
Sep 19 14:19:14 master kubelet[18137]: E0919 14:19:14.805013   18137 kubelet.go:2187] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

是因為上面的config 有指定要裝cni 但我們並沒有裝
所以只要再把flannel裝好就可以用了!

沒想到搞太久了
太小看佈署這件事XD
過12點繼續弄


上一篇
1) 了解k8s 與開始佈署
下一篇
CNI
系列文
從k8s 到service mesh 微服務管理從0開始4

尚未有邦友留言

立即登入留言