centos7下kubernetes(3。部署kubernetes)

環境:三個centos7html

K8s2是Master;K8s1是node1;K8s3是node2node

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

注意:kubernetes幾乎全部的安裝組件和docker 鏡像都放在goolge本身的網站上github

安裝dockerdocker

全部節點都安裝docker:可利用docker-machine安裝;可參考:https://www.cnblogs.com/lkun/p/7655495.htmlvim

全部節點關閉swap:swapoff -a 這個若是不關閉的話在初始化集羣的時候會報錯(若是重啓機器,須要從新關閉)centos

全部節點設置內核參數:爲了支持橋接api

cat <<EOF >  /etc/sysctl.d/k8s.confbash

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p

全部節點 配置k8S源網絡

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

[kubernetes]
name=Kubernetes
baseurl=http: //mirrors .aliyun.com /kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http: //mirrors .aliyun.com /kubernetes/yum/doc/yum-key .gpg
        http: //mirrors .aliyun.com /kubernetes/yum/doc/rpm-package-key .gpg
EOF
 

全部節點安裝kubelet,kubeadm,kubectl

kubelet運行在cluster全部節點上,負責啓動容器和Pod

kubeadm用於初始化Cluster

kubectl是Kubernetes命令行工具。經過kubectl能夠部署和管理應用,查看各類資源,建立,刪除和更新各類組件

 
安裝kubelet,kubeadm,kubectl
yum install  kubelet kubeadm kubectl --disableexcludes=kubernetes
安裝完成以後不須要手動啓動服務,服務會在初始化的時候自動啓動。
 
配置集羣初始化的配置文件(master上)
vim /etc/kubernetes/kubeadm.conf
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: v1.11.2
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
#api:
  #controlPlaneEndpoint: internal-bgc-ops-test-k8s-lb-505377916.cn-northwest-1.elb.amazonaws.com.cn
apiServerCertSANs:
- K8S3
- K8S1
- 192.168.7.93
- 192.168.7.235
#- internal-bgc-ops-test-k8s-lb-505377916.cn-northwest-1.elb.amazonaws.com.cn
networking:
  podSubnet: 10.244.0.0/16
#etcd:
 # endpoints:
  #- http://192.168.7.93:2379
  #- http://192.168.7.235:2379
  #dataDir: /var/lib/etcd

 

 
 
 
全部節點配置 /etc/sysconfig/kubelet         只在國內須要配置,讓kubelet從國內的鏡像倉庫拉取pause鏡像,不然默認從Google的鏡像倉庫拉取,會沒法訪問
vim    /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1

 

 

 

在master1上執行初始化

kubeadm init --config /etc/kubernetes/kubeadm.conf

 node節點加入集羣:在node節點上執行master初始化以後最後提示的命令;

 

在node節點上執行master初始化以後最後提示的命令;

若是沒保存,能夠嘗試如下命令

先在master 上經過kubeadm token list查看token

而後在node上執行:kubeadm join token 192.168.7.78:6443 i9gsiq.c3pr5uocthnbeacf  --discovery-token-unsafe-skip-ca-verification(容許 在沒有--discovery-token-ca-cert-hash的狀況下進行鏈接)

 

 在master上查看節點狀況: kubectl get node

 

 目前還處於NotReady,繼續下面步驟部署pod網絡

 

 部署pod網絡

kubenetes cluster須要安裝Pod網絡,才能進行通訊,不然不通。

kubenetes支持不少中網絡方案,在這裏選擇flannel。

在master上安裝flannel

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

vim   kube-flannel.yml     修改kube-flannel.yml與/etc/kubernetes/kubeadm.conf一致

 

 

export KUBECONFIG=/etc/kubernetes/admin.conf   

    將master與本機的IP進行綁定,能夠用 kubectl cluster-info進行查看,若是不設置,默認master是與本機的localhost:8080綁定的,8080自己沒有啓動,因此會報錯

報錯:The connection to the server localhost:8080 was refused - did you specify the right host or port?

 

 kubectl create -f kube-flannel.yml     確認資源

 

 

設置完pod網絡以後在master查看node狀態:

若是依然有node處於NotReady的狀態

經過如下方法排查:

 kubectl get pod --all-namespaces  (查看pod的運行情況,除了Running的狀態,其他所有不正常)

查看運行不正常的pod的緣由

 describe pod kube-flannel-ds-amd64-qlgtn  --namespace=kube-system  (命令輸出的最後一行)

 

出現這個問題是因爲我在node2上面在配置/etc/sysconfig/kubelet國內源的時候配置錯誤,按照以前上面的步驟進行配置

個人解決辦法是:從新配置/etc/sysconfig/kubelet

                              在node2上執行    kubeadm   reset

                              在master上面執行 kubectl delete node {nodename}

                             而後在node2上面從新加入集羣    

 

 

 

如下配置爲master的高可用配置,若是是單機版,能夠忽略

將 master上的 /etc/kubernetes/pki 及 /etc/kubernetes/kubeadm.conf 拷貝至兩個master上

在兩個master上分別執行   kubeadm init --config /etc/kubernetes/kubeadm.conf

相關文章
相關標籤/搜索