k8s集群安装

    科技2022-07-12  250

    一、基础环境准备

    安装/更新docker

    https://blog.csdn.net/qq_39629343/article/details/80168084

    方法一,网络安装
    # 1.列出包含docker字段的软件的信息 rpm -qa | grep docker # 2.卸载相关软件 yum remove docker-1.13.1-53.git774336d.el7.centos.x86_64 -y yum remove docker-client-1.13.1-53.git774336d.el7.centos.x86_64 -y yum remove docker-common-1.13.1-53.git774336d.el7.centos.x86_64 -y # 3.使用curl升级到最新版 curl -fsSL https://get.docker.com/ | sh # 4.重启Docker systemctl restart docker # 5.设置Docker开机自启 # systemctl enable docker # 6.查看Docker版本信息 docker version # 7.查看Docker系统信息,包括镜像和容器数… docker info # 8.使用docker images命令查看自己之前的镜像是否存在
    方法二,离线文件安装

    离线安装docker 19.03.5版本 Linux下离线安装Docker 相关资源下载地址: tgz rpm

    # 跳过可能会报错提示containerd.io >= 1.2.2-3问题 # yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm yum localinstall containerd.io-1.2.6-3.3.fc30.x86_64.rpm # 安装 docker-ce-cli # yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/docker-ce-cli-19.03.9-3.fc30.x86_64.rpm yum localinstall docker-ce-cli-19.03.9-3.fc30.x86_64.rpm # 安装离线版 docker-ce rpm包 # yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/docker-ce-19.03.9-3.fc30.x86_64.rpm yum localinstall docker-ce-19.03.9-3.el7.x86_64.rpm

    如果 containerd.io、docker-ce-cli、docker-ce在同一目录的话,可执行下方命令安装:

    yum localinstall -y *.rpm

    关闭防火墙与SELINUX

    防止在学习阶段由于防火墙造成的各种网络问题,生产环境跳过这一步

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 systemctl disable firewalld systemctl stop firewall

    关闭交换区

    可以理解为虚拟内存,k8s使用时尽量不使用交换区,防止出现预料之外的问题

    swapoff -a vi /etc/fstab #swap一行注释 #/dev/mapper/centos-swap swap swap defaults 0 0

    配置网桥/系统路由参数

    防止kubeadm报路由警告

    cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system

    修改hosts文件

    使用本地解析主机名

    cat <<"EOF">/etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.102.139 master 192.168.102.140 node1 192.168.102.141 node2 EOF # 修改主机名 hostnamectl set-hostname <your_hostname>

    修改 cgroupfs

    https://www.cnblogs.com/ExMan/p/11613812.html

    vi /etc/docker/daemon.json # 加入以下内容: { "exec-opts":["native.cgroupdriver=systemd"] } # 重启docker systemctl daemon-reload systemctl restart docker systemctl status docker

    设置系统时区并同步时间服务器

    yum install -y ntpdate ntpdate time.windows.com

    二、k8s集群安装

    k8s安装的几种方式

    国内k8s集群部署的几种方式k8s-集群搭建的三种方式和区别,kubeadm、minikube,二进制包

    使用kubeadm部署k8s

    Centos7.7使用kubeadm快速部署K8s集群(适合新手) 使用kubeadm快速部署一套K8S集群 k8s安装及部署步骤 离线安装k8s

    kubectl、kubelete、kubeadm安装
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF setenforce 0 # 查看版本 yum list kubelet kubeadm kubectl # 安装 yum install -y kubelet kubeadm kubectl # 开启自启动 & 启动 systemctl enable kubelet && systemctl start kubelet

    初始化(仅master节点):

    kubeadm init \ --apiserver-advertise-address=192.168.102.137 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.19.2 \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=10.244.0.0/16

    按提示执行(仅master节点):

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

    查看nodes及pods:

    kubectl get nodes kubectl get pod -n kube-system
    安装flannel网络组件(仅master节点)

    docker.io、gcr.io、quay.io镜像加速

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

    kube-flannel.yml 文件及对应镜像建议提前pull到本地

    添加node节点

    k8s删除node k8s 集群 节点状态显示notready 如何向Kubernetes中的节点添加角色?

    kubeadm token create --print-join-command
    应用安装及访问

    k8s系列之安装k8s仪表盘(Dashboard) 注意事项:

    可以提前 docker pull eipwork/kuboard:latest修改 imagePullPolicy 值为 IfNotPresent 或 Never
    配置kubectl命令补全

    kubectl是用于与k8s集群交互的一个命令行工具,操作k8s基本离不开这个工具,所以该工具所支持的命令比较多。好在kubectl支持设置命令补全,使用kubectl completion -h可以查看各个平台下的设置示例。这里以Linux平台为例,演示一下如何设置这个命令补全,完成以下操作后就可以使用tap键补全命令了。

    [root@master ~]# yum install bash-completion -y [root@master ~]# source /usr/share/bash-completion/bash_completion [root@master ~]# source <(kubectl completion bash) [root@master ~]# kubectl completion bash > ~/.kube/completion.bash.inc [root@master ~]# printf " # Kubectl shell completion source '$HOME/.kube/completion.bash.inc' " >> $HOME/.bash_profile [root@master ~]# source $HOME/.bash_profile

    相关学习资料

    https://cread.jd.com/read/startRead.action?bookId=30484828&readType=1 https://github.com/kubeguide/K8sDefinitiveGuide-V4-Sourcecode

    参考

    Processed: 0.011, SQL: 8