Skip to content

Kubernetes(v1.21)安装

  • 本文所使用的镜像文件都在这里 附件.zip,如果怕麻烦,只需要在安装 docker 之后,使用 docker load -i xxx.tar 命令,将镜像文件的压缩包导入到 Docker 中。
  • 当然,也可以使用 for name in $(ls); do docker load -i $name;done命令批量导入,前提是需要进入到存放镜像的那个目录。

第一章:环境规划

1.1 集群类型

  • Kubernetes 集群大致分为两类:一主多从和多主多从。
    • 一主多从(单 master ):一个 Master 节点和多台 Node 节点,搭建简单,但是有单机故障风险,适合用于测试环境。
    • 多主多从(高可用):多台 Master 节点和多台 Node 节点,搭建麻烦,安全性高,适合用于生产环境。
  • 单 master 的架构图:

1653392149308-b70ce06f-edf3-4e16-8292-9d66cfc1cfcc.png

  • 高可用集群的架构图:

1653392241266-de367845-b0d9-4967-8c4b-46ac91c6c856.png

1653392248026-f70cbe54-1590-49c9-8671-08c663f13955.png

为了测试方便,本次搭建的是一主多从类型的集群。

1.2 安装方式

  • Kubernetes 有多种部署方式,目前主流的方式有 kubeadm 、minikube 、二进制包。
  • ① minikube:一个用于快速搭建单节点的 Kubernetes 工具。
  • ② kubeadm:一个用于快速搭建Kubernetes 集群的工具(可以用于生产环境)。
  • ③ 二进制包:从官网上下载每个组件的二进制包,依次去安装(建议生产环境使用)。

1.3 主机规划

角色 IP地址 操作系统 配置 hostname
Master 192.168.68.100 CentOS 7.9,基础设施服务器 2核CPU,4G内存,50G硬盘 k8s-master
Node1 192.168.68.101 CentOS 7.9,基础设施服务器 2核CPU,4G内存,50G硬盘 k8s-node1
Node2 192.168.68.102 CentOS 7.9,基础设施服务器 2核CPU,4G内存,50G硬盘 k8s-node2

1.4 搭建流程

  • ① 准备 3 台机器,要求网络互通(如果是云服务器,要求私网互通;如果是虚拟机,要求网络互通)。
  • ② 在 3 台机器上安装 Docker 容器化环境。
  • ③ 安装 Kubernetes :
    • 3 台机器安装核心组件:kubeadm(创建集群的引导工具)、kubelet 、kubectl(程序员使用的命令行)。
    • kubelet 可以直接通过容器化的方式创建出 Kubernetes  的核心组件,如:Controller Manager、Scheduler 等。
    • 由 kubeadm 引导创建 Kubernetes 集群。

第二章:Kubernetes 安装(v1.21)

2.1 Kubernetes 和 Docker 之间的版本对应关系

1646803776210-6d82129c-9501-4847-9e30-c2978a7d0d82.png

从文档中,我们可以知道 Docker 的版本是 v20.10 ,对应的 Kubernetes 的版本是 v1.21 。

2.2 前置条件

  • 如果是虚拟机则需要让三台机器互通,最简单的做法就是关闭防火墙。
systemctl stop firewalld
systemctl disable firewalld

1646803784469-61bd5119-b316-406f-9935-0db4bec4d218.gif

  • 如果是云厂商提供的云服务器则需要让三台机器的私有 IP 互通,不懂的,请查看《云平台操作》,而且还需要设置安全组策略放行指定的端口。
  • ① Master 节点:
协议 方向 端口范围 目的 使用者
TCP 入站 6443 Kubernetes API server 所有
TCP 入站 2379-2380 etcd server client API kube-apiserver, etcd
TCP 入站 10250 Kubelet API 自身, 控制面
TCP 入站 10259 kube-scheduler 自身
TCP 入站 10257 kube-controller-manager 自身
  • ② Node 节点:
协议 方向 端口范围 目的 使用者
TCP 入站 10250 Kubelet API 自身, 控制面
TCP 入站 30000-32767 NodePort Services† 所有
  • 目前,青云(云厂商)除了以上的操作之外,还需要设置安全组的组内互信。

1646803793706-dd1c8b27-8383-4bd7-8a01-9840148a29cc.png

1646803798736-0abe21f4-0b02-4faf-a7ec-ad67afec2f34.png

1646803803350-eba6c63a-b187-408c-bcac-78182af8bc38.png

2.3 准备工作

2.3.1 升级系统内核

  • 查看当前系统的版本:
cat /etc/redhat-release

1646803808153-9bbdab71-9ded-4788-aac3-115966be62bd.gif

  • 查看当前系统的内核:
uname -sr
# 查看启动顺序
yum install -y grub2-pc
grub2-editenv list
# 查看可用内核版本及启动顺序
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg

1646803813902-abd33b92-34a5-41da-bc2c-473d5dc83300.gif

默认的 3.10.0 实在是太低了。

  • 在 CentOS 7.x 上启用 ELRepo 仓库:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

1646803825232-ead2f782-e388-479b-88af-5c8535cb984e.gif

温馨提示:可以替换为清华源:sed -i "s/mirrorlist=/#mirrorlist=/g" /etc/yum.repos.d/elrepo.reposed -i "s#elrepo.org/linux#mirrors.tuna.tsinghua.edu.cn/elrepo#g" /etc/yum.repos.d/elrepo.repo

  • 查看可用的系统内核相关包:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

1646803830561-a2052fd9-2b95-495d-857c-c5ac03e4358c.gif

  • 安装最新主线内核版本:
yum -y --enablerepo=elrepo-kernel install kernel-lt

1646803836752-7c73aa35-f3ef-4bd5-903c-157e6cf7b88b.gif

  • 设置默认的内核版本:
vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0 # 修改此处,原来是 saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

1646803843579-120cd1b2-f5f0-4bba-bab3-e59f7dbf6e2d.gif

温馨提示:也可以使用这个命令 sed -i 's/^GRUB_DEFAULT=saved$/GRUB_DEFAULT=0/' /etc/default/grub

  • 重新创建内核配置:
grub2-mkconfig -o /boot/grub2/grub.cfg

1646803848690-4a617db5-ba8f-47f3-ab9d-229592ca7b16.gif

  • 重启系统:
reboot

1646803854421-1e1f34dc-a4a0-4b5d-92e5-a848501795bd.gif

  • 查看当前系统的内核:
uname -sr

1646803861119-1500053b-ad85-470f-b7a3-775bc5ec7e99.gif

2.3.2 设置主机名

  • 命令:
hostnamectl set-hostname <hostname>
  • 示例:
# 192.168.65.100
hostnamectl set-hostname k8s-master
# 192.168.65.101
hostnamectl set-hostname k8s-node1
# 192.168.65.102
hostnamectl set-hostname k8s-node2

1646803867053-543825ed-941f-4cab-b829-5b5c070aa33a.gif

2.3.3 主机名解析

  • 为了方便后面集群节点间的直接调用,需要配置一下主机名解析,企业中推荐使用内部的 DNS 服务器。
cat >> /etc/hosts << EOF
127.0.0.1   $(hostname)
192.168.65.100 k8s-master
192.168.65.101 k8s-node1
192.168.65.102 k8s-node2
EOF

1646803918474-0ac2bf8a-3bff-456b-8dec-aca8ded2a89d.gif

2.3.4 时间同步

  • Kubernetes 要求集群中的节点时间必须精确一致,所以在每个节点上添加时间同步:
yum install ntpdate -y
ntpdate time.windows.com

1646803951375-8a1d000a-8e6a-4e60-be7b-069a9d8c086d.gif

2.3.5 关闭 SELinux

  • 查看 SELinux 是否开启:
getenforce
  • 永久关闭 SELinux ,需要重启:
sed -i 's/enforcing/disabled/' /etc/selinux/config
  • 关闭当前会话的 SELinux ,重启之后无效:
setenforce 0

1646803964143-6aecc669-36e9-4e28-9434-cd7f8bf75a51.gif

2.3.6 关闭 swap 分区

  • 永久关闭 swap ,需要重启:
sed -ri 's/.*swap.*/#&/' /etc/fstab
  • 关闭当前会话的 swap ,重启之后无效:
swapoff -a

1646803973635-5d92fb45-b5cc-477f-bbd3-3760bdf1fbba.gif

2.3.7 将桥接的 IPv4 流量传递到 iptables 的链

  • 修改 /etc/sysctl.conf 文件:
# 如果有配置,则修改
sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.all.disable_ipv6.*#net.ipv6.conf.all.disable_ipv6=1#g"  /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.default.disable_ipv6.*#net.ipv6.conf.default.disable_ipv6=1#g"  /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.lo.disable_ipv6.*#net.ipv6.conf.lo.disable_ipv6=1#g"  /etc/sysctl.conf
sed -i "s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g"  /etc/sysctl.conf
# 可能没有,追加
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1"  >> /etc/sysctl.conf
  • 加载 br_netfilter 模块:
modprobe br_netfilter
  • 持久化修改(保留配置包本地文件,重启系统或服务进程仍然有效):
sysctl -p

1646803979325-b3f32fd8-d206-40c0-9849-8d075cd516d6.gif

2.3.8 开启 ipvs

  • 在 Kubernetes 中 service 有两种代理模型,一种是基于 iptables ,另一种是基于 ipvs 的。ipvs 的性能要高于 iptables 的,但是如果要使用它,需要手动载入 ipvs 模块。
  • 在三台机器安装 ipset 和 ipvsadm :
yum -y install ipset ipvsadm
  • 在三台机器执行如下脚本:
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
  • 授权、运行、检查是否加载:
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

1646803987512-6a0295c0-179d-4139-8aa0-065ff6b8a62b.gif

2.3.9 重启

  • 重启三台机器:
reboot

1646803999815-fa982fb7-e577-452e-8014-af802db79688.gif

2.3.10 Docker 安装

  • 三台机器上都安装 Docker 。
  • 卸载旧版本:
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

1646804009924-2284a5f0-6f76-4bd0-93fe-215820dc3961.gif

  • yum 安装 gcc 相关:
yum -y install gcc
yum -y install gcc-c++

1646804018775-358dd8f0-4e9a-4198-9731-d6cea8b14ccd.gif

  • 安装所需要的软件包:
yum -y install yum-utils

1646804028755-b85ba051-ff11-4b86-b9e3-af68cdc185ed.gif

  • 设置 stable 镜像仓库:
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1646804037334-527931ab-0173-4b19-b944-514eaa8b3bf9.gif

  • 更新 yum 软件包索引:
yum makecache fast

1646804043220-4dc38864-c134-4bf8-a1c1-450b9d20fb28.gif

  • 查看存储库中 Docker 的版本:
yum list docker-ce --showduplicates | sort -r

1646804051074-61064bdf-e955-4cfe-9f27-a95cea6c7864.gif

  • 安装指定版本的 Docker(v20.10) :
yum -y install docker-ce-3:20.10.8-3.el7.x86_64 docker-ce-cli-1:20.10.8-3.el7.x86_64 containerd.io

1646804060511-4ee6928f-b657-48d1-86e5-a538e5b4d209.gif

  • 启动 Docker:
# 启动 Docker 
systemctl start docker
# 开启自动启动
systemctl enable docker

1646804071996-132573a3-5466-4d0f-ba0d-fef18b9296db.gif

  • 验证 Docker 是否安装成功:
docker version

1646804080402-f1ff5058-879a-4313-a1ca-a71cfe365b05.gif

  • 阿里云镜像加速:
sudo mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"], 
  "registry-mirrors": [
    "https://du3ia00u.mirror.aliyuncs.com",
    "https://docker.lixd.xyz"
  ],
  "live-restore": true,
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"},
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 5,
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1646804087457-eaeac294-ec83-4fa9-b80b-bb9687ccc2dd.gif

2.3.11 添加阿里云的 Kubernetes 的 YUM 源

  • 由于 Kubernetes 的镜像源在国外,非常慢,这里切换成国内的阿里云镜像源(三台机器均需执行下面命令):
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

1646804094469-cc9f5cce-2941-4fce-8caa-695b242e9c45.gif

2.3.12 安装 kubelet 、kubeadm 和  kubectl

  • 《1.4 搭建流程》中已经解释过,这里不再解释:
yum install -y kubelet-1.21.10 kubeadm-1.21.10 kubectl-1.21.10

1646804105999-8efdacbb-2846-40d9-b7cc-0b3973f79a3e.gif

  • 为了实现 Docker 使用的 cgroup drvier 和 kubelet 使用的 cgroup drver 一致,建议修改 /etc/sysconfig/kubelet 文件的内容:
vim /etc/sysconfig/kubelet
# 修改
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

1646804110728-a5b9b17c-0c89-403a-91e7-332ac29c82b0.gif

  • 设置为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动:
systemctl enable kubelet

1646804116700-fc2f02c0-cce5-447d-96b0-6f8264c3980e.gif

2.4 查看 Kubernetes 安装所需镜像

  • 查看 Kubernetes 安装所需镜像:
kubeadm config images list

1646804122049-9c13c8df-14ac-43b9-b513-f97f130e0362.gif

2.5 下载 Kubernetes 安装所需镜像

技巧:有大佬已经将墙外的 Docker 镜像同步到 DockerHub 中,地址在这里:https://github.com/x-mirrors/gcr.io ,大家可以去看看。

  • 三台机器下载镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0

1646804127393-e664cfaa-1a09-44ff-bd74-8a5cbf838822.gif

  • 给 coredns 镜像重新打 tag :
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0 registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0

1646804135249-8aca3f05-9dc2-4b85-ad6a-d25ac22fd226.gif

  • 也可以使用如下的命令快速安装:
kubeadm config images pull --kubernetes-version=v1.21.10 \
--image-repository registry.aliyuncs.com/google_containers

2.6 部署 Kubernetes 的 Master 节点

  • 在 192.168.65.100 机器上部署 Kubernetes 的 Master 节点:
# 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里需要指定阿里云镜像仓库地址
kubeadm init \
  --apiserver-advertise-address=192.168.65.100 \
  --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
  --kubernetes-version=v1.21.10 \
  --service-cidr=10.96.0.0/16 \
  --pod-network-cidr=10.244.0.0/16

注意:

  • apiserver-advertise-address 一定要是主机的 IP 地址。
  • apiserver-advertise-address 、service-cidr 和 pod-network-cidr 不能在同一个网络范围内。
  • 不要使用 172.17.0.1/16 网段范围,因为这是 Docker 默认使用的。

1646804143250-bce5b674-6a46-4546-b328-df36dea6cf9a.gif

  • 日志:
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/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.65.100:6443 --token tluojk.1n43p0wemwehcmmh \
    --discovery-token-ca-cert-hash sha256:c50b25a5e00e1a06cef46fa5d885265598b51303f1154f4b582e0df21abfa7cb
  • 根据日志提示操作,在 192.168.65.100 执行如下命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 如果是 root 用户,还可以执行如下命令
export KUBECONFIG=/etc/kubernetes/admin.conf

1646804154854-336c6ee5-a848-4862-a8d7-53b47111fbdf.gif

  • 默认的 token 有效期为 24 小时,当过期之后,该 token 就不能用了,这时可以使用如下的命令创建 token :
kubeadm token create --print-join-command
# 生成一个永不过期的token
kubeadm token create --ttl 0 --print-join-command

2.7 部署 Kubernetes 的 Node节点

  • 根据日志提示操作,在 192.168.65.101 和 192.168.65.102 执行如下命令:
kubeadm join 192.168.65.100:6443 --token tluojk.1n43p0wemwehcmmh \
    --discovery-token-ca-cert-hash sha256:c50b25a5e00e1a06cef46fa5d885265598b51303f1154f4b582e0df21abfa7cb

1646804187476-825f6332-ae02-4e3b-8aa8-71c3f90368b4.gif

2.8 部署网络插件

  • 官网

  • Kubernetes 支持多种网络插件,比如 flannel、calico、canal 等,任选一种即可,本次选择 calico(在 192.168.65.100 节点上执行,网络不行,请点这里 calico.yaml)。

  • calico 和 k8s 的版本对应
kubectl apply -f https://projectcalico.docs.tigera.io/v3.19/manifests/calico.yaml

1646804193324-81045ad3-4bad-4597-bd14-d501fd06e5cb.gif

备注:为什么使用 3.19 , 原因在这里

  • 查看部署 CNI 网络插件进度:
kubectl get pods -n kube-system
watch kubectl get pods -n kube-system

1646804222817-801217df-dae8-46b9-a47b-687cd7aec013.gif

2.9 查看节点状态

  • 在 Master(192.168.65.100)节点上查看节点状态:
kubectl get nodes

1646804227768-fa477b14-6942-460b-93db-efdb9737f0d6.gif

2.10 设置 kube-proxy 的 ipvs 模式

  • 在 Master(192.168.65.100)节点设置 kube-proxy 的 ipvs 模式:
kubectl edit cm kube-proxy -n kube-system
apiVersion: v1
data:
  config.conf: |-
    apiVersion: kubeproxy.config.k8s.io/v1alpha1
    bindAddress: 0.0.0.0
    bindAddressHardFail: false
    clientConnection:
      acceptContentTypes: ""
      burst: 0
      contentType: ""
      kubeconfig: /var/lib/kube-proxy/kubeconfig.conf
      qps: 0
    clusterCIDR: 10.244.0.0/16
    configSyncPeriod: 0s
    conntrack:
      maxPerCore: null
      min: null
      tcpCloseWaitTimeout: null
      tcpEstablishedTimeout: null
    detectLocalMode: ""
    enableProfiling: false
    healthzBindAddress: ""
    hostnameOverride: ""
    iptables:
      masqueradeAll: false
      masqueradeBit: null
      minSyncPeriod: 0s
      syncPeriod: 0s
    ipvs:
      excludeCIDRs: null
      minSyncPeriod: 0s
      scheduler: ""
      strictARP: false
      syncPeriod: 0s
      tcpFinTimeout: 0s
      tcpTimeout: 0s
      udpTimeout: 0s
    kind: KubeProxyConfiguration
    metricsBindAddress: ""
    mode: ""
    nodePortAddresses: null
      minSyncPeriod: 0s
      syncPeriod: 0s
    ipvs:
      excludeCIDRs: null
      minSyncPeriod: 0s
      scheduler: ""
      strictARP: false
      syncPeriod: 0s
      tcpFinTimeout: 0s
      tcpTimeout: 0s
      udpTimeout: 0s
    kind: KubeProxyConfiguration
    metricsBindAddress: ""
    mode: "ipvs" # 修改此处
...

1646804234925-d5f5727e-4741-4551-b030-9678786855a2.gif

  • 删除 kube-proxy ,让 Kubernetes 集群自动创建新的 kube-proxy :
kubectl delete pod -l k8s-app=kube-proxy -n kube-system

1646804239765-f0fe6f45-a467-4849-b68f-318bd9e6c285.gif

2.11 让 Node 节点也能使用 kubectl 命令

  • 默认情况下,只有 Master 节点才有 kubectl 命令,但是有些时候我们也希望在 Node 节点上执行 kubectl 命令:
# 192.168.65.101 和 192.168.65.102
mkdir -pv ~/.kube
touch ~/.kube/config
# 192.168.65.100
scp /etc/kubernetes/admin.conf root@192.168.65.101:~/.kube/config
# 192.168.65.100
scp /etc/kubernetes/admin.conf root@192.168.65.102:~/.kube/config

1646804245198-8d8b9e93-f5b8-4fb2-b653-f57bc96ff037.gif

2.12 Kubernetes 安装 Nginx

  • 部署 Nginx :
kubectl create deployment nginx --image=nginx:1.14-alpine

1646804254302-6ae000f3-93d3-424c-b8e4-88f61211ab7d.gif

  • 暴露端口:
kubectl expose deployment nginx --port=80 --type=NodePort

1646804258970-feff20ee-9f84-4c07-9f39-cb9cc5933338.gif

  • 查看服务状态:
kubectl get pods,svc

1646804263388-961c6be8-4a0d-4aba-8b4c-b6ed4eb54798.gif

2.13 自动补全

# 安装 
yum -y install bash-completion
# 自动补全 
echo 'source <(kubectl completion bash)' >>~/.bashrc 
kubectl completion bash >/etc/bash_completion.d/kubectl
# 全局
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
source /usr/share/bash-completion/bash_completion

1646871817183-86b5f661-aca7-4344-b97b-6bbb6234ba15.gif

2.14 视频安装版

此处为语雀卡片,点击链接查看

更新: 2024-07-15 02:29:02
原文: https://www.yuque.com/fairy-era/yg511q/wuhwio

Comments