zoukankan      html  css  js  c++  java
  • Cents 7 Kubernetes

    一、系统准备

    1、环境

    3台centos 7 ,1台master2台Node节点,生成环境一般3台master和N台Node节点。

    cat /etc/redhat-release
    CentOS Linux release 7.7.1908 (Core)

    2、修改主机名

    hostnamectl set-hostname master
    hostnamectl set-hostname node-1
    hostnamectl set-hostname node-2

    3、安装docker

    参考:https://www.cnblogs.com/fanxp/p/11997680.html

    4、设置

    # 关闭SElinux
    setenforce 0
    sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    
    # 关闭防火墙
    systemctl disable --now firewalld  
    
    # 关闭swap
    swapoff -a && sysctl -w vm.swappiness=0  
    # 取消开机挂载swap
    sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab  
    
    # 解决路由异常问题
    yum install -y bridge-utils.x86_64
    # 加载br_netfilter模块,使用lsmod查看开启的模块
    modprobe  br_netfilter  
    cat <<EOF >  /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    # 重新加载所有配置文件
    sysctl --system  

    二、安装kubelet kubeadm kubectl

    1、设置源

    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

    2、安装

    # 查询可用版本
    yum list --showduplicates | grep 'kubeadm|kubectl|kubelet'
    # 这里默认安装最新版本(v1.17.0)
    yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
    # 设置开启启动并启动kubelet
    systemctl enable kubelet && systemctl start kubelet

    3、master

    拉取镜像

    # 拉取集群所需镜像,这个需要FQ
    kubeadm config images pull 
    
    # 不能FQ用下面方法
    kubeadm config images list 
    
    # 用其它地址拉起然后用tag修改
    docker pull gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0
    docker pull gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0
    docker pull gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0
    docker pull gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
    docker pull gcr.azk8s.cn/google-containers/pause:3.1
    docker pull gcr.azk8s.cn/google-containers/etcd:3.4.3-0
    docker pull gcr.azk8s.cn/google-containers/coredns:1.6.5
    
    # 修改tag
    docker tag gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0 k8s.gcr.io/kube-apiserver:v1.17.0
    docker tag gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0 k8s.gcr.io/kube-controller-manager:v1.17.0
    docker tag gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0 k8s.gcr.io/kube-scheduler:v1.17.0
    docker tag gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0
    docker tag gcr.azk8s.cn/google-containers/pause:3.1 k8s.gcr.io/pause:3.1
    docker tag gcr.azk8s.cn/google-containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
    docker tag gcr.azk8s.cn/google-containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5
    
    # 删除原镜像
    docker rmi gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0
    docker rmi gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0
    docker rmi gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0
    docker rmi gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
    docker rmi gcr.azk8s.cn/google-containers/pause:3.1
    docker rmi gcr.azk8s.cn/google-containers/etcd:3.4.3-0
    docker rmi gcr.azk8s.cn/google-containers/coredns:1.6.5

    初始化

    kubeadm init --apiserver-advertise-address 192.168.1.221 --pod-network-cidr 10.244.0.0/16

    --apiserver-advertise-address API Server将要广播的监听地址。如指定为 `0.0.0.0` 将使用缺省的网卡地址。
    --pod-network-cidr=10.244.0.0/16 指明pod网络可以使用的IP地址段。 如果设置了这个参数,control plane将会为每一个节点自动分配CIDRs。

    用户设置权限

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    flannel网络

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    4、node

    拉取镜像

    #拉取
    docker pull gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
    docker pull gcr.azk8s.cn/google-containers/pause:3.1
    
    #修改tag
    docker tag gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0
    docker tag gcr.azk8s.cn/google-containers/pause:3.1 k8s.gcr.io/pause:3.1
    
    #删除原镜像
    docker rmi gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
    docker rmi gcr.azk8s.cn/google-containers/pause:3.1

     添加节点

    kubeadm join 192.168.1.221:6443 --token pt7x4v.5hz02ixc3ymt26az 
        --discovery-token-ca-cert-hash sha256:5104ec0c1da36ff56fe2592ac53e7ee2ba3247da4d9582ae49457ce6747fcf27 

    5、查看节点状态

    在master中执行

    kubectl get nodes

     node节点状态处于 NotReady,可以查看pod是否运行正常

    kubectl get pod --all-namespaces

     通过 kubectl describe pod <Pod Name> 查看 Pod 的具体情况

    kubectl describe pod kube-flannel-ds-amd64-4l92d --namespace=kube-system

    通过这里可以看到,node节点正在拉取quay.io/coreos/flannel:v0.11.0-amd64镜像,可以多等一会,node节点拉取完镜像kubernetes会自动重试

    如果一直没有成功,可以通过下面命令查看是在哪个节点,直接去node节点机器手动执行docker pull下载镜像

    kubectl get pod -o wide --all-namespaces

     最终效果

  • 相关阅读:
    父容器直接清除浮动的css
    [原创 js]指定DOM中添加字符串函数
    跨浏览器的透明度解决方案(包括IE8 Beta 2)
    [原创 js]验证表单强度的js
    帧率、码流与分辩率之间关系
    隔行扫描和逐行扫描(interlace and progressive )
    VGA管脚定义
    红眼消除
    HDMI_VGA_CBVS同时显示
    分辨率与行场同步信号的关系
  • 原文地址:https://www.cnblogs.com/fanxp/p/12076982.html
Copyright © 2011-2022 走看看