k8s平台搭建,dashboard图形化管理,纯实例

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ck784101777/article/details/102729366

关于k8s的原理我不多说,官网文档都有,https://www.kubernetes.org.cn/k8s

本章主要将如何搭建k8s以及使用图形化界面(dashbroad)管理k8s

1.准备四台主机

一台作为master,3台为节点机node

2 设置 ip 和主机名

 以自己的主机ip和主机名为主,四台主机都需要配置
  /etc/hosts

  192.168.1.7 master

  192.168.1.8 node1

  192.168.1.9 node2

  192.168.1.10 node3

 #开启路由转发,每台都需要
  echo "1" > /proc/sys/net/ipv4/ip_forward

3 配置 yum 源

  [依赖包下载]https://github.com/ck784101777/kubernetes

containernetworking-cni-0.6.0-3.el7.x86_64.rpm  kubernetes-kubeadm-1.10.3-0.el7.x86_64.rpm
etcd-3.3.11-2.el7.centos.x86_64.rpm             kubernetes-master-1.10.3-0.el7.x86_64.rpm
flannel-0.7.1-4.el7.x86_64.rpm                  kubernetes-node-1.10.3-0.el7.x86_64.rpm
kubernetes-1.10.3-0.el7.x86_64.rpm        kubernetes-client-1.10.3-0.el7.x86_64.rpm
 

  yum -y install vsftp                    #装ftp,只在master上

  mkdir /var/ftp/kubernetes         

  cp *  /var/ftp/kubernetes/           #将依赖包放到kubernetes下

  systemctl start vsftpd 

  yum -y install createrepo           #安装createrepo用来生成yum仓库

  createrepo .                               #创建yum仓库,有一个字符点不要忘记

  vim /etc/yum.repos.d/kub.repo    #创建yum配置文件,每一台主机都要配置

   [kub]
name=kub
baseurl=ftp://192.168.1.11/kubernetes
gpgcheck=0
enabled=1

4 配置私有仓库 registry 

 [依赖包下载]https://github.com/ck784101777/kubernetes

      centos.tar
      kubernetes-dashboard.tar
      pod-infrastructure.tar

 四台主机都需要安装

  yum -y install docker                   #docker安装包

  yum install docker-distribution    #docker仓库依赖包

 在master上配置私有仓库,修改配置文件

 
   vim /etc/sysconfig/docker                                                                 #每台主机上都要修改
   ADD_REGISTRY='--add-registry 192.168.1.7:5000'         #添加一个仓库,ip地址填你master的ip
   INSECURE_REGISTRY='--insecure-registry 192.168.1.7:5000'   #将这个仓库通过安全授权
   

   systemctl start docker docker-distribution              #启动docker,docker-distribution每台都要起

   docker -i load centos.tar                                      #上传镜像,在master上操作

   docker -i load kubernetes-dashboard.tar

   docker -i load  pod-infrastructure.tar

   docker tag  docker.io/centos:latest 192.168.1.7:5000/docker.io/centos:latest         #打包镜像,在master上操作

   docker tag  kubernetes-dashboard-amd64:v1.8.3  192.168.1.7:5000/kubernetes-dashboard-amd64:v1.8.3

   docker tag  pod-infrastructure.tar 192.168.1.7:5000/pod-infrastructure:latest

   docker push  192.168.1.7:5000/docker.io/centos:latest         #上传镜像到镜像仓库,master上操作

   docker push  192.168.1.7:5000/kubernetes-dashboard-amd64:v1.8.3

   docker push  192.168.1.7:5000/pod-infrastructure:latest

   docker pull  192.168.1.7:5000/docker.io/centos:latest         #下载镜像,node上操作

   docker pull  192.168.1.7:5000/kubernetes-dashboard-amd64:v1.8.3

   docker pull  192.168.1.7:5000/pod-infrastructure:latest

  

5 配置 kubernets - master

 yum -y install etcd kubernetes-master kubernetes-client       #安装依赖包
 
 vim /etc/etcd/etcd.conf                     #修改etcd.cnf 第六行,改成master的ip
        6: ETCD_LISTEN_CLIENT_URLS="http://192.168.1.7:2379"
 vim /etc/kubernetes/config               #修改config第22行,改成master的ip
       22: KUBE_MASTER="--master=http://192.168.1.7:8080"

 vim /etc/kubernetes/apiserver          #修改第8行,改成0.0.0.0,第17行,改成master的ip,第23行,删除双引号下的ServiceAccount
        8: KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"          
       17: KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.1.7:2379"

       23: 删除 ServiceAccount 参数 

  KUBE_ADMISSION_CONTROL="--admission-     control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ResourceQuota"

  systemctl start  kube-apiserver kube-controller-manager  kube-scheduler etcd
  

6 配置 kubernets - node

yum -y install  kubernetes-node        #安装节点服务
   

vim   /etc/kubernetes/config      #修改config第22行,改成master的ip
       22: KUBE_MASTER="--master=http://192.168.1.7:8080"
 

 vim  /etc/kubernetes/kubelet

  #修改kubelet第5行,改成0.0.0.0,修改11行修改成本机ip,修改第14行,请复制我的(修改一下ip,为master的ip的地址)    
        5: KUBELET_ADDRESS="--address=0.0.0.0"
       11: KUBELET_HOSTNAME="--hostname-override=本机名称"
       14:KUBELET_ARGS="--cgroup-driver=systemd --fail-swap-on=false --kubeconfig=/etc/kubernetes/kubelet.kubeconfig --pod-infra-container-image=192.168.1.7:5000/pod-infrastructure:latestt
   

 vim   /etc/kubernetes/kubelet.kubeconfig     #创建一个kubelet.kubeconfig,配置信息如下,修改一下ip,为master的ip的地址
apiVersion: v1
kind: Config
clusters:
  - cluster:
      server: http://192.168.1.7:8080                ###Master的IP,即自身IP
    name: local
contexts:
  - context:
      cluster: local
    name: local
current-context: local

 systemctl start  kubelet kube-proxy  docker         #启动一下服务

此时kubernate节点已经建立成功了,可以去master主机上验证一下

kubectl get node              #为Ready说明已经启动成功

 
NAME      STATUS    ROLES     AGE       VERSION
node1      Ready     <none>    1d        v1.10.3
node2      Ready     <none>    1d        v1.10.3
node3      Ready     <none>    1d        v1.10.3


7.网络

完成了上面的配置,k8s已经配置成功了,但是还是无法通信,下面是配置网络,实现容器与真机,容器与容器之间的通信
   

 master配置:

    vim  /etc/etcd/etcd.conf           #修改第6行,为0.0.0.0
      ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

   #输入命令etcdctl mk 创建虚拟网络

    etcdctl mk /atomic.io/network/config '{"Network": "10.254.0.0/16", "Backend": {"Type": "vxlan"}}'

  #查看是否创建成功

   etcdctl get  /atomic.io/network/config  
{"Network": "10.254.0.0/16", "Backend": {"Type": "vxlan"}}

 #输入ifconfig可以看到有个10.254.0.0的网络

 ifconfig 
 docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 10.254.92.1  netmask 255.255.255.0  broadcast 0.0.0.0

   node配置:

   yum install flannel            #安装flannel
   

   #修改第4行,改成master的ip
    vim  /etc/sysconfig/flanneld  
     FLANNEL_ETCD_ENDPOINTS="http://192.168.1.7:2379"
  
     systemctl stop docker         #必须关闭docker

     systemctl start flanneld       #必须先启动flanneld再启动docker

     systemctl start docker

    连通性测试:

     #在node1上创建一个docker容器,放在后台

     docker run -itd 192.168.1.7:5000/docker.io/centos

    #查看id号

      docker ps 

    #查看容器的ip

      docker inspect id号

    #在node2节点上ping这个容器的ip,若ping通说明网络配置成功

    ping ip 

    #配置失败的解决方案:

    #将路由转发默认规则设置为接受

    iptables -I FORWARD -j ACCEPT

     

8 创建容器,测试

[baseos.yaml和kube-dashboard.yaml下载地址]https://github.com/ck784101777/kubernetes

#通过k8s创建容器  

kubectl create -f baseos.yaml

#查看容器
 kubectl get pod -o wide

#执行容器
 kubectl exec -it test-os-3826630470-jc5j4 -- /bin/bash
 

#创建kube-dashboard图形化管理
  kubectl create -f kube-dashboard.yaml

#查看容器,需要切换命名空间.
 kubectl get pod -o wide -n kube-system

NAME                                   READY     STATUS    RESTARTS   AGE       IP                      NODE
kubernetes-dashboard-8c7f65475-gm788   1/1       Running   0          1h        10.254.17.2   node2

#我的dashboard运行在node2上,使用firefox访问管理网站,端口为30090

firefox node2:30090

猜你喜欢

转载自blog.csdn.net/ck784101777/article/details/102729366
今日推荐