今天時間不夠,當個小孬孬用官方推薦的佈署工具 kubeadm 來佈署
佈署環境
用虛擬機裝
先設好固定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
sudo /etc/init.d/network restart
這時安裝docker 就不會錯了
執行
yum install -y kubelet kubeadm kubectl
如果遇到error
先執行
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
再執行
yum install -y kubelet kubeadm kubectl
就可以了
使用下面這個指令可以查看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:
此時我們先不改其設定,只加入一個參數讓之後flannel 使用網路設定
kubeadm init --pod-network-cidr 10.244.0.0/16 --kubernetes-version v1.16.0
等待良久,取決於網路速度
終於安裝好了! 並且吐出訊息教學如何加入集群
)
至此如果使用
kubectl get node
會發現master 是NotReady 狀態!!
指令查看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裝好就可以用了!