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

相关文章
相关标签/搜索