ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

k8s 在线安装(1.20.9)

k8s 在线安装(1.20.9) 环境准备VMware 虚拟机下载地址一主一工作节点创建两台虚拟机环境 我这里两台的IP是192.168.88.134master 168.168.88.135(工作节点)2核2G 磁盘20G 网络适配器NATlinux 版本 CentOS Linux release 7.9.2009 (Core部署1 docker(20.10.14) 在线安装所有机器都安装docker1卸载旧docker yum remove-ydocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine2安装yum工具如果没有的话 yuminstall-yyum-utils3配置 Docker 官方仓库网络问题 可能下载比较慢 yum-config-manager\--add-repo\https://download.docker.com/linux/centos/docker-ce.repo 配置 Docker 阿里仓库推荐sudoyum-config-manager\--add-repo\http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo4安装 yuminstall-ydocker-ce-20.10.14 docker-ce-cli-20.10.14 containerd.io-1.4.65启动 systemctlenabledocker--now6配置加速sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json-EOF { registry-mirrors: [ https://docker.m.daocloud.io, https://dockerproxy.com, https://hub.rat.dev ], exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 } EOFsudosystemctl daemon-reloadsudosystemctl restartdocker配置作用建议registry-mirrorsDocker Hub 镜像加速✅native.cgroupdriversystemdDocker 使用 systemd 管理 cgroupK8s 推荐 ✅log-driverjson-file容器日志保存为 JSON✅max-size100m单个日志文件最大 100MB强烈建议 ✅storage-driveroverlay2Docker 底层存储驱动推荐 ✅错误一 Cannot find a valid baseurl for repo: base/7/x86_64主要是因为CentOS 7 已经 EOL默认的mirrorlist.centos.org源已经不能正常使用。如果你想继续使用 CentOS 7完全可以不需要换系统。把 CentOS 7 的基础源改成 7.9.2009 的归档源mkdir-p/etc/yum.repos.d/backupmv/etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/cat/etc/yum.repos.d/CentOS-Base.repoEOF [base] nameCentOS-7.9.2009 - Base baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/RPM-GPG-KEY-CentOS-7 [updates] nameCentOS-7.9.2009 - Updates baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/RPM-GPG-KEY-CentOS-7 [extras] nameCentOS-7.9.2009 - Extras baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/RPM-GPG-KEY-CentOS-7 EOF删除 Yum 以前缓存的软件包信息和仓库元数据 yum clean all 从你现在配置的 Yum 源重新下载软件包索引信息并建立缓存 yum makecache 看当前启用了哪些 Yum 软件源以及每个源里面有多少软件包 yum repolist2 k8s(1.20.9)在线安装基础环境#各个机器设置自己的域名hostnamectl set-hostname xxxx# 将 SELinux 设置为 permissive 模式相当于将其禁用sudosetenforce0sudosed-is/^SELINUXenforcing$/SELINUXpermissive//etc/selinux/config#关闭swapswapoff-ased-ris/.*swap.*/#//etc/fstab#允许 iptables 检查桥接流量catEOF|sudotee/etc/modules-load.d/k8s.confbr_netfilter EOFcatEOF|sudotee/etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 EOFsudosysctl--system安装kubelet、kubeadm、kubectlcatEOF|sudotee/etc/yum.repos.d/kubernetes.repo[kubernetes] nameKubernetes baseurlhttp://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled1 gpgcheck0 repo_gpgcheck0 gpgkeyhttp://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg excludekubelet kubeadm kubectl EOFsudoyuminstall-ykubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9--disableexcludeskubernetessudosystemctlenable--nowkubelet使用kubeadm引导集群可以提前查看 kubeadm 需要哪些镜像kubeadm config images list\--kubernetes-versionv1.20.9正常会看到类似k8s.gcr.io/kube-apiserver:v1.20.9 k8s.gcr.io/kube-controller-manager:v1.20.9 k8s.gcr.io/kube-scheduler:v1.20.9 k8s.gcr.io/kube-proxy:v1.20.9 k8s.gcr.io/pause:3.2 k8s.gcr.io/etcd:3.4.13-0 k8s.gcr.io/coredns:1.7.0可以提前发现镜像拉取问题​ 方式1 下载各个机器需要的镜像kubeadm config images pull\--kubernetes-versionv1.20.9\--image-repositoryregistry.cn-hangzhou.aliyuncs.com/lfy_k8s_images​ 方式2 下载各个机器需要的镜像脚本拉取sudotee./images.sh-EOF #!/bin/bash images( kube-apiserver:v1.20.9 kube-proxy:v1.20.9 kube-controller-manager:v1.20.9 kube-scheduler:v1.20.9 coredns:1.7.0 etcd:3.4.13-0 pause:3.2 ) for imageName in ${images[]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName done EOFchmodx ./images.sh./images.sh初始化主节点#所有机器添加master域名映射以下需要修改为自己的echo192.168.88.134 cluster-endpoint/etc/hosts#主节点初始化kubeadm init\--apiserver-advertise-address192.168.88.134\--control-plane-endpointcluster-endpoint\--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images\--kubernetes-version v1.20.9\--service-cidr10.96.0.0/16\--pod-network-cidr10.244.0.0/16# 所有网络范围不重叠参数作用--apiserver-advertise-addressMaster API Server 自己的 IP--control-plane-endpoint集群访问控制平面的统一地址--image-repositoryK8s 镜像从哪里拉--kubernetes-versionK8s 版本--service-cidrService 使用的 IP 网段--pod-network-cidrPod 使用的 IP 网段init 执行成功保存结果Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config Alternatively,ifyou are the root user, you can run:exportKUBECONFIG/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Runkubectl apply -f [podnetwork].yamlwith one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ You can nowjoinany number of control-plane nodes by copying certificate authorities andserviceaccount keys on eachnodeandthenrunning the following as root: kubeadmjoincluster-endpoint:6443--tokenpimhvk.mc2nuocyn9g9k7hn\--discovery-token-ca-cert-hash sha256:037879a1c22c41e7b60468114e765b70d32169289a8222e08bf50c03e59d9a34\--control-plane Then you canjoinany number of worker nodes by running the following on each as root: kubeadmjoincluster-endpoint:6443--tokenpimhvk.mc2nuocyn9g9k7hn\--discovery-token-ca-cert-hash sha256:037879a1c22c41e7b60468114e765b70d32169289a8222e08bf50c03e59d9a34master节点执行mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config work节点执行 kubeadmjoincluster-endpoint:6443--tokenpimhvk.mc2nuocyn9g9k7hn\--discovery-token-ca-cert-hash sha256:037879a1c22c41e7b60468114e765b70d32169289a8222e08bf50c03e59d9a34安装calico(3.20.6)1下载地址wgethttps://docs.projectcalico.org/v3.20/manifests/calico.yaml2修改calico.yaml内容 CALICO_IPV4POOL_CIDR 对应的值改为10.244.0.0/163master执行 kubectl apply-fcalico.yaml安装 NFS主节点#安装nfsyuminstall-ynfs-utils#启动服务systemctlenable--nowrpcbind systemctlenable--nownfs-server#检查systemctl status nfs-server#创建授权 文件夹mkdir-p/nfs/datachmod777/nfs/dataecho/nfs/data/ *(insecure,rw,sync,no_root_squash)/etc/exports#配置生效exportfs-r#查看exportfs-v从节点#安装nfsyuminstall-ynfs-utils# 查看 192.168.88.134 这台 NFS 服务器对外共享了哪些目录showmount-e192.168.88.134#执行以下命令挂载 nfs 服务器上的共享目录到本机路径 /root/nfsmountmkdir-p/nfs/data#把远程 NFS 服务器上的192.168.88.134:/nfs/data 挂载到当前这台机器本地的 /nfs/datamount-tnfs192.168.88.134:/nfs/data /nfs/data# 写入一个测试文件echohello nfs server/nfs/data/test.txtpv pvcPVPersistentVolume持久卷代表一块已经准备好的存储资源。它可以来自 NFS、Ceph、云盘、本地磁盘等。PVCPersistentVolumeClaim持久卷声明可以理解成 Pod 向 K8s 提交的一张“我要存储”的申请单。3 Kubernetes常用命令速查# Kubernetes 常用命令速查带注释版## 1. 集群与节点kubectl cluster-info# 查看集群基本信息Master、DNS 等kubectl version--short# 查看客户端和服务端版本kubectl get nodes# 查看所有节点状态kubectl get nodes-owide# 查看节点详细信息IP、系统等kubectl describenodenode-name# 查看某个节点的详细信息资源、污点、条件等kubectl taint nodesnode-namekeyvalue:NoSchedule# 给节点打污点阻止 Pod 调度kubectl label nodesnode-namekeyvalue# 给节点打标签## 2. 命名空间kubectl get ns# 查看所有命名空间kubectl create nsns-name# 创建命名空间kubectl delete nsns-name# 删除命名空间会删除里面所有资源kubectl config set-context--current--namespacens-name# 切换当前默认命名空间## 3. 资源查看kubectl getresource# 查看指定资源po/svc/deploy/cm/secret 等kubectl getresource-A# 查看所有命名空间的资源kubectl getresource-nns-owide# 查看指定命名空间资源带更多列kubectl getresource-oyaml# 以 YAML 格式输出kubectl getresource-ojson# 以 JSON 格式输出kubectl getresource--show-labels# 显示资源标签kubectl get po,svc,deploy-nns# 同时查看多种资源kubectl get all-nns# 查看命名空间下常见资源不含 cm/secret/pvckubectl get events-nns--sort-by.lastTimestamp# 按时间排序查看事件## 4. 详细信息与调试kubectl describeresourcename-nns# 查看资源详细信息事件、状态、挂载等kubectl logspod-name-nns# 查看 Pod 日志kubectl logspod-name-ccontainer-nns# 查看多容器 Pod 中指定容器的日志kubectl logspod-name-nns--previous# 查看上一次容器的日志容器重启后kubectl logs-fpod-name-nns# 实时跟踪日志kubectlexec-itpod-name-nns-- /bin/bash# 进入 Pod 交互终端bashkubectlexec-itpod-name-ccontainer-nns--sh# 进入指定容器shkubectl port-forwardpod-name8080:80-nns# 将本地端口转发到 Podkubectl port-forward svc/svc-name8080:80-nns# 将本地端口转发到 Service## 5. 创建 / 更新 / 删除kubectl apply-ffile.yaml# 根据 YAML 文件创建或更新资源推荐kubectl apply-fdir/# 应用目录下所有 YAML 文件kubectl apply-furl# 从 URL 应用 YAMLkubectl create-ffile.yaml# 创建资源已存在会报错不推荐kubectl create deploymentname--imageimage# 快速创建 Deploymentkubectl editresourcename-nns# 在线编辑资源kubectl deleteresourcename-nns# 删除指定资源kubectl delete-ffile.yaml# 根据 YAML 文件删除资源kubectl delete popod-name-nns--force--grace-period0# 强制立即删除 Pod## 6. 扩缩容与滚动更新kubectl scale deployname--replicas3-nns# 手动扩缩容kubectl autoscale deployname--min2--max10--cpu-percent80-nns# 自动扩缩容HPAkubectlsetimage deploy/namecontainernew-image-nns# 更新镜像触发滚动更新kubectl rollout status deploy/name-nns# 查看滚动更新状态kubectl rollouthistorydeploy/name-nns# 查看更新历史kubectl rollout undo deploy/name-nns# 回滚到上一版本kubectl rollout undo deploy/name--to-revision2-nns# 回滚到指定版本## 7. ConfigMap / Secretkubectl create cmname--from-filepath-nns# 从文件创建 ConfigMapkubectl create cmname--from-literalkeyvalue-nns# 从键值对创建 ConfigMapkubectl get cmname-oyaml-nns# 查看 ConfigMap 内容kubectl create secret genericname--from-literalkeyvalue-nns# 创建普通 Secretkubectl create secret docker-registryname\--docker-serverserver--docker-usernameuser--docker-passwordpwd-nns# 创建镜像仓库 Secret## 8. 服务与网络kubectl get svc-nns# 查看 Servicekubectl expose deployname--port80--target-port8080--typeClusterIP-nns# 暴露 Deployment 为 Servicekubectl get endpoints-nns# 查看 Endpoints后端 Pod IPkubectl get ingress-nns# 查看 Ingress## 9. 资源监控kubectltopnodes# 查看节点 CPU/内存使用率需 metrics-serverkubectltoppods-nns# 查看 Pod 资源使用情况kubectltoppods--containers-nns# 查看每个容器的资源使用kubectl get resourcequota-nns# 查看资源配额kubectl get limitrange-nns# 查看 LimitRange## 10. 实用技巧kubectl get poname-nns-oyaml# 导出 Pod 完整 YAMLkubectl delete po --field-selectorstatus.phaseFailed-nns# 删除所有失败状态的 Podkubectl create deploy nginx--imagenginx --dry-runclient-oyamldeploy.yaml# 生成 YAML 模板不真正创建kubectl run nginx--imagenginx --dry-runclient-oyaml# 生成 Pod YAML 模板kubectl config get-contexts# 查看所有上下文kubectl config use-contextcontext-name# 切换上下文kubectl config current-context# 查看当前上下文## 常用资源简写pods → po services → svc deployments → deploy replicasets → rs statefulsets → sts daemonsets → ds configmaps → cm secrets → secret persistentvolumes →pvpersistentvolumeclaims → pvc namespaces → ns ingresses → ing nodes → no## 推荐 Alias可直接加到 ~/.bashrc 或 ~/.zshrcaliaskkubectl# kubectl 简写aliaskgpkubectl get pods# 查看 Podaliaskgpakubectl get pods -A# 查看所有命名空间 Podaliaskgskubectl get svc# 查看 Servicealiaskgdkubectl get deploy# 查看 Deploymentaliaskdkubectl describe# 描述资源aliasklkubectl logs# 查看日志aliasklfkubectl logs -f# 实时跟踪日志aliaskekubectl exec -it# 进入容器aliaskakubectl apply -f# 应用 YAMLaliaskdelkubectl delete# 删除资源
返回列表