1. 程式人生 > >超安裝kubernetes cluster

超安裝kubernetes cluster

2,安裝rpm包 yum install -y /tmp/docker*.rpm && rm -f /tmp/docker*.rpm

3,指定加速器使用Docker中國加 echo ‘{“registry-mirrors”:[“https://registry.docker-cn.com”]}’ > /etc/docker/daemon.json

二,安裝kubernetes1.11.0 1,準備 a,修改hosts檔案 vim /etc/hosts 47.98.255.0 test30 47.95.223.227 linux01 47.94.3.211 linux02 b,配置轉發引數 cat < /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 vm.swappiness=0 EOF 然後執行 sysctl --system 使之生效 c,關閉swap swapoff -a 要永久禁掉swap分割槽,開啟如下檔案註釋掉swap那一行 vim /etc/fstab d,關閉seliunx和firewalld 臨時禁用selinux setebforce 0 永久關閉 修改/etc/sysconfig/selinux檔案設定 sed -i ‘s/SELINUX=permissive/SELINUX=disabled/’ /etc/sysconfig/selinux 關閉防火牆 systemctl disable firewalld systemctl stop firewalld (生產環境不適用) e,禁用iptables filter表中FOWARD鏈,這樣會引起Kubernetes叢集中跨Node的Pod無法通訊,在各docker節點執行以下命令 (此條看情況) iptables -P FORWARD ACCEPT 可在docker的systemd unit檔案中以ExecStartPost加入上面的命令 vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT systemctl daemon-reload systemctl restart docker

2,安裝kubeadm、kubelet、kubectl 安裝 Kubeadm 首先我們要配置好阿里雲的國內源,執行如下命令: cat < /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 快取: yum -y install epel-release yum clean all yum makecache 下面就開始正式安裝 Kubeadm 了: yum -y install kubelet-1.11.0-0 (指定版本) yum -y install kubectl-1.11.0-0 yum -y install kubeadm-1.11.0-0 yum -y install kubernetes-cni (前面三個安裝了這個也會自動被裝上) 然後啟動kubelet systemctl enable kubelet && systemctl start kubelet

3,配置kubeadm使用的映象 (這很重要,因為在國內的原因,無法訪問到 Google 的映象庫,所以我們需要執行以下指令碼來從 Docker Hub 倉庫中獲取相同的映象,並且更改 TAG 讓其變成與 Google 拉去映象一致。) 新建一個 Shell 指令碼 #!/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 coredns:1.1.3 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.9 k8s-dns-kube-dns-amd64:1.14.9 k8s-dns-dnsmasq-nanny-amd64:1.14.9 ) for imageName in i

mages[@];dodockerpullkeveon/{images[@]} ; do docker pull keveon/imageName docker tag keveon/imageNamek8s.gcr.io/imageName k8s.gcr.io/imageName docker rmi keveon/$imageName done docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1 (必須加) 然後執行 chmod +xxx.sh sh xxx.sh 檢視 :etc/systemd/system/kubelet.service.d/10-kubeadm.conf vim etc/systemd/system/kubelet.service.d/10-kubeadm.conf [Service] Environment=“KUBELET_KUBECONFIG_ARGS=–bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf” Environment=“KUBELET_CONFIG_ARGS=–config=/var/lib/kubelet/config.yaml” Environment=“KUBELET_CGROUP_ARGS=–cgroup-driver=cgroupfs” EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env EnvironmentFile=-/etc/sysconfig/kubelet ExecStart= ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS

這裡需要主意的是要看一下docker的cgroup driver與 --cgroup-driver要一致。 可以用 docker info |grep cgroup 檢視,有可能是systemd 或者 cgroupfs

systemctl daemon-reload systemctl restart kubelet

以上部分做完之後 在所有node節點做相同操作(別漏了)

4,在master上操作 初始化相關映象 kubeadm init --kubernetes-version=v1.11.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=172.17.87.52(此選項可不用,本機內網IP) –kubernetes-version 版本號 --pod-network-cidr pod網路ip --apiserver-advertise-address 地址 4.1 配置kubectl認證資訊 export KUBECONFIG=/etc/kubernetes/admin.conf 如果你想持久化的話,直接執行以下命令 echo “export KUBECONFIG=/etc/kubernetes/admin.conf” >> ~/.bash_profile source .bash_profile 4.2 安裝flannel網路 wget https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml 或:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 或:自己手動寫檔案 kubectl create -f kube-flannel.yml (不建議使用,無法更新,必須先delete) 或者kubectl apply -f kube-flannel.yaml (建立+更新,可以重複使用) 檢視節點 kubectl get nodes 一般來說master是負載排程node的,不參與負載,如果需要參與 可: kubectl taint nodes --all node-role.kubernetes.io/master- 5,在node節點操作 執行剛剛主機輸出的: kubeadm join 172.17.87.52:6443 --token b0j8kp.t7vaqce6rpypaz5u --discovery-token-ca-cert-hash sha256:086f10f1d4c17e54d4c625449fc587d709d0b7fe916a6ccf280fb5a55edd7564 6,在master上操作 kubectl get nodes Kubectl get pods --all-namespaces

7,安裝Dashboard 在master上操作 (heatpster已經不用了,可刪除) 地址:https://github.com/gh-Devin/kubernetes-dashboard 下載:git clone https://github.com/gh-Devin/kubernetes-dashboard.git 執行:Kubectl -n kube-system create -f . 會發現報錯。。。看不到容器,這個時候你需要新建一個 dashboard-admin.yaml 檔案,然後填充如下內容: apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard labels: k8s-app: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects:

  • kind: ServiceAccount name: kubernetes-dashboard namespace: kube-system 填好之後呢,執行如下命令啟動容器:

kubectl -f ./dashboard-admin.yaml create