美文网首页Docker容器程序员
在centos7上安装配置k8s集群

在centos7上安装配置k8s集群

作者: yubang | 来源:发表于2017-09-13 00:29 被阅读1426次

    文章首发于 http://blog.yubangweb.com/k8sshi-jian-bi-ji/ ,力求最简单快捷配置好kubernetes集群

    配置背景介绍

    为什么要用kubernetes这么复杂的docker集群管理工具呢?一开始接触了docker内置的swarm,这个工具非常简单快捷的完成docker集群功能。但是在使用docker1.13内置的swarm做集群的时候遇到vip负载均衡没有正确映射端口到外网,或者出现地址被占用的情况,这对高可用性的需求是不利的,然而又没找到一个解决方案,只能转投k8s。

    实验环境

    • 腾讯云
    • centos7.3 64位

    安装

    yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo  
    yum makecache fast
    yum -y install docker-engine-1.13.1  
    yum install epel-release -y
    yum remove -y docker-engine*
    yum install -y kubernetes etcd docker flannel     
    

    修改配置文件

    注意下面的10.135.163.237换成自己服务器ip

    sed -i "s/localhost:2379/10.135.163.237:2379/g" /etc/etcd/etcd.conf
    
    sed -i "s/localhost:2380/10.135.163.237:2380/g" /etc/etcd/etcd.conf
    
    sed -i "s/10.135.163.237:2379/10.135.163.237:2379,http:\/\/127.0.0.1:2379/g" /etc/etcd/etcd.conf
    
    
    sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g" /etc/kubernetes/apiserver
    
    sed -i "s/--insecure-bind-address=127.0.0.1/--insecure-bind-address=0.0.0.0/g" /etc/kubernetes/apiserver
    
    sed -i "s/--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota/--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota/g" /etc/kubernetes/apiserver
    
    
    
    sed -i "s/--hostname-override=127.0.0.1/--hostname-override=10.135.163.237/g" /etc/kubernetes/kubelet
    
    
    sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/kubelet
    
    
    sed -i "s/--address=127.0.0.1/--address=0.0.0.0/g" /etc/kubernetes/kubelet
    
    
    sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/config
    
    sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g" /etc/sysconfig/flanneld
    

    修改host

    vi /etc/hosts
    10.135.163.237   k8s_master
    

    添加网络

    systemctl enable etcd.service
    
    systemctl start etcd.service
    
    etcdctl mk //atomic.io/network/config '{"Network":"172.17.0.0/16"}'
    

    启动服务

    
    service docker start
    for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler   kube-proxy  kubelet docker flanneld   ; do systemctl restart   $SERVICES; systemctl enable $SERVICES; systemctl status $SERVICES; done;
    

    第一个demo

    编写文件a.yaml

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: my-app
    spec:
      replicas: 2
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - name: my-app
            image: registry.alauda.cn/yubang/paas_base_test
            ports:
            - containerPort: 80
            command: ["/bin/bash", "/var/start.sh"] 
            resources:  
              limits:  
                cpu: 0.5  
                memory: 64Mi      
    

    编写文件b.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-svc
      labels:
        app: my-app
    spec:
      ports:
      - port: 80
        targetPort: 80
        nodePort: 30964
      type: NodePort
      selector:
        app: my-app
    

    创建服务

    kubectl create -f a.yaml --validate
    kubectl create -f b.yaml --validate
    

    删除服务

    kubectl delete -f a.yaml
    kubectl delete -f b.yaml
    

    增加子节点

    安装软件

    yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo  
    yum makecache fast  
    yum -y install docker-engine-1.13.1  
    yum install epel-release -y  
    yum remove -y docker-engine*  
    yum install -y kubernetes docker flannel  
    

    修改配置文件(10.135.163.237为主节点ip,139.199.0.29为当前节点ip)

    sed -i "s/--hostname-override=127.0.0.1/--hostname-override=139.199.0.29/g" /etc/kubernetes/kubelet
    
    
    sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/kubelet
    
    
    sed -i "s/--address=127.0.0.1/--address=0.0.0.0/g" /etc/kubernetes/kubelet
    
    sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g" /etc/kubernetes/config
    
    sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g" /etc/sysconfig/flanneld
    
    sed -i "s/--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota/--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota/g" /etc/kubernetes/apiserver
    
    

    启动服务

    service docker start
    
    for SERVICES in kube-proxy kubelet docker flanneld; do
            systemctl restart $SERVICES
            systemctl enable $SERVICES
            systemctl status $SERVICES
        done;
    

    在主服务器查看节点

    kubectl get node
    

    重启服务(重新加入集群)

    systemctl restart kube-apiserver.service
    

    删除节点

    kubectl delete node 节点ip
    

    相关文章

      网友评论

        本文标题:在centos7上安装配置k8s集群

        本文链接:https://www.haomeiwen.com/subject/wlahsxtx.html