zoukankan      html  css  js  c++  java
  • CKA认证-kubeadm1.20安装部署K8S

    # 关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    
    # 关闭selinux
    # 永久
    sed -i 's/enforcing/disabled/' /etc/selinux/config  
    # 临时
    setenforce 0  
    # 关闭swap
    # 临时
    swapoff -a 
    # 永久 
    sed -ri 's/.*swap.*/#&/' /etc/fstab    
    # 根据规划设置主机名
    hostnamectl set-hostname master
    hostnamectl set-hostname work1
    hostnamectl set-hostname work2
    
    #添加hosts
    cat >/etc/hosts<<EOF
    10.0.0.6 master
    10.0.0.7 work1
    10.0.0.8 work2
    EOF
    # 将桥接的IPv4流量传递到iptables的链
    cat > /etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    # 生效
    sysctl --system  
    # 时间同步
    yum install ntpdate -y
    ntpdate time.windows.com
    #安装docker-ce
    #下载安装docker
    wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.6.tgz
    tar -zvxf docker-19.03.6.tgz
    cp docker/* /usr/bin/
    rm -rf docker*
    #配置成systemclt方式管理
    cat >/etc/systemd/system/docker.service<<EOF
    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target firewalld.service
    Wants=network-online.target
    
    [Service]
    Type=notify
    ExecStart=/usr/bin/dockerd
    ExecReload=/bin/kill -s HUP $MAINPID
    LimitNOFILE=infinity
    LimitNPROC=infinity
    TimeoutStartSec=0
    Delegate=yes
    KillMode=process
    Restart=on-failure
    StartLimitBurst=3
    StartLimitInterval=60s
    
    [Install]
    WantedBy=multi-user.target
    EOF
    #配置镜像加速器
    cat > /etc/docker/daemon.json << EOF
    {
      "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
    }
    EOF
    #设置权限
    chmod +x /etc/systemd/system/docker.service
    systemctl daemon-reload
    systemctl enable docker
    systemctl start docker
    systemctl restart docker
    docker info
    #添加阿里云YUM软件源
    cat > /etc/yum.repos.d/kubernetes.repo << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    #安装kubeadm,kubelet和kubectl
    yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
    systemctl enable kubelet
    #初始化master
    kubeadm init 
      --apiserver-advertise-address=10.0.0.6 
      --image-repository registry.aliyuncs.com/google_containers 
      --kubernetes-version v1.20.0 
      --service-cidr=10.96.0.0/12 
      --pod-network-cidr=10.244.0.0/16 
      --ignore-preflight-errors=all
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    kubectl get nodes
    #work节点join集群
    kubeadm join 10.0.0.6:6443 --token e41ctj.g52jlzyx8o62bvoo 
        --discovery-token-ca-cert-hash sha256:84198a854b62d583cdd9a17bd16652a201cf22356865fffa47b45eb35fee3985
    #部署calico网络
    wget https://www-1259165587.cos.ap-nanjing.myqcloud.com/K8S/calico.yaml
    kubectl apply -f calico.yaml
    kubectl get pods -n kube-system
    #master节点scp文件到work节点
    scp /etc/kubernetes/admin.conf work1:/etc/kubernetes/
    scp /etc/kubernetes/admin.conf work2:/etc/kubernetes/
    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
    source ~/.bash_profile
    #work节点测试
    kubectl get pods --all-namespaces
    #等Calico Pod都Running,节点也会准备就绪
    #删除yml文件创建的pod:kubectl delete -f calico.yaml
    vim /etc/kubernetes/manifests/kube-controller-manager.yaml 
    vim /etc/kubernetes/manifests/kube-scheduler.yaml 
    #分别注释- --port=0参数
    systemctl restart kubelet
    kubectl get cs
    #创建一个pod验证集群情况
    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=NodePort
    kubectl get pod,svc
    #创建UI面板界面
    wget https://www-1259165587.cos.ap-nanjing.myqcloud.com/K8S/kubernetes-dashboard.yaml
    kubectl apply -f kubernetes-dashboard.yaml
    kubectl get pods -n kubernetes-dashboard
    # 创建用户
    kubectl create serviceaccount dashboard-admin -n kube-system
    # 用户授权
    kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
    # 获取用户Token
    kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
    
    
    #出了问题看这个
    # 查看日志
    kubectl logs <pod名称> -n kube-system
    # 查看事件  
    kubectl describe pod <pod名称> -n kube-system 
    
    #更换容器引擎为containerd
    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo
    yum install -y containerd.io
    mkdir -p /etc/containerd
    containerd config default | sudo tee /etc/containerd/config.toml
    systemctl restart containerd
    #修改配置
    vi /etc/containerd/config.toml
       [plugins."io.containerd.grpc.v1.cri"]
          sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"  57行 
             ...
             [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
                 SystemdCgroup = true    97行
                 ...
            [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
              endpoint = ["https://b9pmyelo.mirror.aliyuncs.com"] 106行
              
    systemctl restart containerd
    #配置kubelet使用containerd
    vi /etc/sysconfig/kubelet 
    KUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd
    
    systemctl restart kubelet
    #验证
    kubectl get node -o wide
    k8s-node1  xxx  containerd://1.4.4
    #crictl工具检查和调试容器
    cat >/etc/crictl.yaml<<EOF
    runtime-endpoint: unix:///run/containerd/containerd.sock
    image-endpoint: unix:///run/containerd/containerd.sock
    timeout: 10
    debug: false
    EOF
    
    因为你不会,所以你才会---大司马
  • 相关阅读:
    Android服务之bindService源代码分析
    [iOS 高级] iOS远程推送与本地推送大致流程
    redis集群
    面试你之前,我希望在简历上看到这些!
    解决安卓出现导入第三方包反复的错误
    【PA2012】【BZOJ4289】Tax
    Spark jdbc postgresql数据库连接和写入操作源代码解读
    Java中hashcode的理解
    CvArr、Mat、CvMat、IplImage、BYTE转换
    CSDN日报20170413 ——《天天写业务代码的那些年,我们是怎样成长过来的》
  • 原文地址:https://www.cnblogs.com/liushiya/p/14872165.html
Copyright © 2011-2022 走看看