使用kubeadm安装k8s1.24高可用集群

目录

1、初始化安装k8s集群的实验环境

[1.1 修改机器IP,变成静态IP](#1.1 修改机器IP,变成静态IP)

关闭selinux

[1.2 配置机器主机名](#1.2 配置机器主机名)

[1.3 配置主机hosts文件,相互之间通过主机名互相访问](#1.3 配置主机hosts文件,相互之间通过主机名互相访问)

[1.4 配置主机之间无密码登录](#1.4 配置主机之间无密码登录)

[1.5 关闭交换分区swap,提升性能](#1.5 关闭交换分区swap,提升性能)

[1.6 修改机器内核参数](#1.6 修改机器内核参数)

[1.7 关闭firewalld防火墙](#1.7 关闭firewalld防火墙)

[1.8 关闭selinux](#1.8 关闭selinux)

[1.9 配置阿里云的repo源](#1.9 配置阿里云的repo源)

[1.10 配置安装k8s组件需要的阿里云的repo源](#1.10 配置安装k8s组件需要的阿里云的repo源)

[1.11 配置时间同步](#1.11 配置时间同步)

[1.12 开启ipvs](#1.12 开启ipvs)

[1.13 安装基础软件包](#1.13 安装基础软件包)

2、安装containerd服务

[2.1 安装containerd](#2.1 安装containerd)

3、安装初始化k8s需要的软件包

4、kubeadm初始化k8s集群

6、扩容k8s集群-添加第一个工作节点

8、安装kubernetes网络组件-Calico

9、测试在k8s创建pod是否可以正常访问网络

10、测试coredns是否正常


文档中的YAML文件配置直接复制粘贴可能存在格式错误,故实验中所需要的YAML文件以及本地包均打包至网盘

链接:https://pan.baidu.com/s/1Z9MVBH19DULolsvHeILr1g

提取码:tw6t

podSubnet (pod网段) 10.244.0.0/16

serviceSubnet (service网段) : 10.96.0.0/16

实验环境规划:

准备两台虚拟机

操作系统:centos 7.6

配置: 4Gib 内存/ 6 vCPU /100G 硬盘

网络:NAT

机器IP:

K8s 控制节点 I p : 192.168.40.180

K8s工作节点ip: 192.168.40.181

开启虚拟机的虚拟化:

1 、初始化安装k 8s 集群的实验环境

1.1 修改机器IP,变成静态IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33文件

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

IPADDR=192.168.40.180

NETMASK=255.255.255.0

GATEWAY=192.168.40.2

DNS1=192.168.40.2

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

DEVICE=ens33

ONBOOT=yes

# 修改配置文件之后需要重启网络服务才能使配置生效,重启网络服务命令如下:

service network restart

注: /etc/sysconfig/network-scripts/ifcfg-ens33 文件里的配置说明:

NAME=ens33 #网卡名字,跟DEVICE名字保持一致即可

DEVICE=ens33 #网卡设备名,大家ip addr可看到自己的这个网卡设备名,每个人的机器可能这个名字不一样,需要写自己的

BOOTPROTO=static #static表示静态ip地址

ONBOOT=yes #开机自启动网络,必须是yes

IPADDR=192.168.40.180 #ip地址,需要跟自己电脑所在网段一致

NETMASK=255.255.255.0 #子网掩码,需要跟自己电脑所在网段一致

GATEWAY=192.168.40.2 #网关,在自己电脑打开cmd,输入ipconfig /all可看到

DNS1=192.168.40.2 #DNS,在自己电脑打开cmd,输入ipconfig /all可看到

关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 修改selinux配置文件之后,重启机器,selinux配置才能永久生效

getenforce

Disabled

#显示 Disabled 说明selinux已经关闭

1.2 配置机器主机名

192.168.40.180 上执行如下:

hostnamectl set-hostname xianchaomaster1 && bash

192.168.40.181 上执行如下:

hostnamectl set-hostname xianchaonode1 && bash

1.3 配置主机hosts文件,相互之间通过主机名互相访问

修改每台机器的 /etc/hosts 文件,增加如下两行:

192.168.40.180 xianchaomaster1

192.168.40.181 xianchaonode1

1.4 配置主机之间无密码登录

[root@xianchaomaster1 ~]# ssh-keygen #一路回车,不输入密码

把本地生成的密钥文件和私钥文件拷贝到远程主机

[root@xianchaomaster1 ~]# ssh-copy-id xianchaomaster1

[root@xianchaomaster1 ~]# ssh-copy-id xianchaonode1

[root@ xianchaonode1 ~]# ssh-keygen #一路回车,不输入密码

把本地生成的密钥文件和私钥文件拷贝到远程主机

[root@ xianchaonode1 ~]# ssh-copy-id xianchaomaster1

[root@ xianchaonode1 ~]# ssh-copy-id xianchaonode1

1.5 关闭交换分区swap,提升性能

# 临时关闭

[root@xianchaomaster1 ~]# swapoff -a

[root@xianchaonode1 ~]# swapoff -a

#永久关闭:注释swap挂载,给swap这行开头加一下注释

[root@xianchaomaster1 ~]# vim /etc/fstab

#/dev/mapper/centos-swap swap swap defaults 0 0

[root@ xianchaonode1 ~]# vim /etc/fstab

#/dev/mapper/centos-swap swap swap defaults 0 0

问题1: 为什么要关闭swap交换分区?

Swap是交换分区,如果机器内存不够,会使用swap分区,但是swap分区的性能较低,k 8s 设计的时候为了能提升性能,默认是不允许使用交换分区的。 K ubeadm初始化的时候会检测swap是否关闭,如果没关闭,那就初始化失败。如果不想要关闭交换分区,安装k 8s的时候可以指定--ignore-preflight-errors=Swap来解决。

1.6 修改机器内核参数

[root@xianchaomaster1 ~]# modprobe br_netfilter

[root@xianchaomaster1 ~]# cat > /etc/sysctl.d/k8s.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

[root@xianchaomaster1 ~]# sysctl -p /etc/sysctl.d/k8s.conf

[root@xianchaonode1 ~]# modprobe br_netfilter

[root@xianchaonode1 ~]# cat > /etc/sysctl.d/k8s.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

[root@xianchaonode1 ~]# sysctl -p /etc/sysctl.d/k8s.conf

问题1:sysctl是做什么的?

在运行时配置内核参数

-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

问题 2 为什么要执行 modprobe br_netfilter

修改 /etc/sysctl.d/k8s.conf 文件,增加如下三行参数:

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

sysctl -p /etc/sysctl.d/k8s.conf 出现报错:

sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory

sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory

解决方法:

modprobe br_netfilter

问题 3 为什么开启 net.bridge.bridge-nf-call-iptables 内核参数?

在centos下安装docker, 执行docker info出现如下警告

WARNING: bridge-nf-call-iptables is disabled

WARNING: bridge-nf-call-ip6tables is disabled

解决办法:

vim /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

问题4: 为什么要开启 net.ipv4.ip_forward = 1 参数?

kubeadm初始化k 8s 如果报错:

就表示没有开启i p_forward ,需要开启。

net.ipv4.ip_forward 是数据包转发:

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。

要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况;其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开。

1.7 关闭firewalld防火墙

[root@xianchaomaster1 ~]# systemctl stop firewalld ; systemctl disable firewalld

[root@xianchaonode1 ~]# systemctl stop firewalld ; systemctl disable firewalld

1.8 关闭selinux

[root@xianchaomaster1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 修改selinux配置文件之后,重启机器,selinux配置才能永久生效

[root@xianchaonode1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 修改selinux配置文件之后,重启机器,selinux配置才能永久生效

[root@xianchaomaster1 ~]#getenforce

Disabled

#显示 Disabled 说明selinux已经关闭

[root@xianchaonode1 ~]#getenforce

Disabled

#显示 Disabled 说明selinux已经关闭

1.9 配置阿里云的repo源

#配置国内安装docker和containerd的阿里云的repo源

[root@xianchaomaster1 ~]#yum install yum-utils -y

[root@xianchaomaster1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@xianchaonode1 ~]# yum install yum-utils -y

[root@xianchaonode1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.10 配置安装k 8s 组件需要的阿里云的repo源

[root@xianchaomaster1 ~]# 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

E OF

#将xianchaomaster1上Kubernetes的repo源复制给xianchaonode1和xianchaonode 2

[root@xianchaomaster1 ~]# scp /etc/yum.repos.d/kubernetes.repo xianchaonode1 :/etc/yum.repos.d/

1.11 配置时间同步

xianchaomaster1 上执行如下:

# 安装ntpdate命令

[root@xianchaomaster1 ~]# yum install ntpdate -y

# 跟网络时间做同步

[root@xianchaomaster1 ~]# ntpdate cn.pool.ntp.org

#把时间同步做成计划任务

[root@xianchaomaster1 ~]# crontab -e

* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org

#重启crond服务

[root@xianchaomaster1 ~]# service crond restart

xianchaonode1 上执行如下:

# 安装ntpdate命令

[root@ xianchaonode1 ~]# yum install ntpdate -y

# 跟网络时间做同步

[root@ xianchaonode1 ~]# ntpdate cn.pool.ntp.org

#把时间同步做成计划任务

[root@ xianchaonode1 ~]# crontab -e

* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.o rg

#重启crond服务

[root@ xianchaonode1 ~]# service crond restart

1.12 开启ipvs

安装k 8s: 没有在内核加载ipvs模块,会自动适用iptables做代理,如果开启了ipvs,那会使用ipvs做规则

#把ipvs .modules 上传到xianchaomaster1机器的 /etc/sysconfig/modules/ 目录下

[root@xianchaomaster1]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

ip_vs_ftp 13079 0

nf_nat 26583 1 ip_vs_ftp

ip_vs_sed 12519 0

ip_vs_nq 12516 0

ip_vs_sh 12688 0

ip_vs_dh 12688 0

#把ipv s . modules 拷贝到xianchaonode 1 /etc/sysconfig/modules/ 目录下

[root@xianchaomaster1 ~]# scp /etc/sysconfig/modules/ipvs.modules xianchaonode 1 :/etc/sysconfig/modules/

[root@xianchaonode1]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

ip_vs_ftp 13079 0

nf_nat 26583 1 ip_vs_ftp

ip_vs_sed 12519 0

ip_vs_nq 12516 0

ip_vs_sh 12688 0

ip_vs_dh 12688 0

问题1: ipvs是什么?

ipvs (IP Virtual Server) 实现了传输层负载均衡,也就是我们常说的4层LAN交换,作为 Linux 内核的一部分。ipvs运行在主机上,在真实服务器集群前充当负载均衡器。ipvs可以将基于TCP和UDP的服务请求转发到真实服务器上,并使真实服务器的服务在单个 IP 地址上显示为虚拟服务。

问题2: ipvs iptable 对比分析

kube-proxy支持 iptables 和 ipvs 两种模式, 在kubernetes v1.8 中引入了 ipvs 模式,在 v1.9 中处于 beta 阶段,在 v1.11 中已经正式可用了。iptables 模式在 v1.1 中就添加支持了,从 v1.2 版本开始 iptables 就是 kube-proxy 默认的操作模式,ipvs 和 iptables 都是基于netfilter的,但是 ipvs 采用的 hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能。那么 ipvs 模式和 iptables 模式之间有哪些差异呢?

1 ipvs 为大型集群提供了更好的可扩展性和性能

2 ipvs 支持比 iptables 更复杂的复制均衡算法(最小负载、最少连接、加权等等)

3 ipvs 支持服务器健康检查和连接重试等功能

1.13 安装基础软件包

[root@xianchaomaster1 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm

[root@xianchaonode1 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm

总结:

改了ip地址

S elinux

配置主机名

配置hosts文件

配置主机之间无密码登录

S wap交换分区

F irewalld

安装containerd的yum源

安装k 8s 命令行工具yum源

时间同步

开启ipvs

安装基础包

2、安装containerd服务

2.1 安装 containerd

接下来安装步骤在k 8s 控制节点和工作节点都要操作

在各个服务器节点上安装容器运行时 Containerd。下载Containerd的二进制包:

wget https://github.com/containerd/containerd/releases/download/v1.6.4/cri-containerd-cni-1.6.4-linux-amd64.tar.gz

这个二进制包在课件里也有,大家可以直接从课件里上传到k 8s 所有机器上

cri-containerd-cni-1.6.4-linux-amd64.tar.gz 压缩包中已经按照官方二进制部署推荐的目录结构布局好。 里面包含了 systemd 配置文件,containerd 以及 cni 的部署文件。 将解压缩到系统的根目录 / 中:

tar -zxvf cri-containerd-cni-1.6.4-linux-amd64.tar.gz -C /

注意经测试 cri-containerd-cni-1.6.4-linux-amd64.tar.gz 包中包含的 runc 在 CentOS 7 下的动态链接有问题,这里从 runc 的 github 上单独下载 runc,并替换上面安装的 containerd 中的 runc:

wget https://github.com/opencontainers/runc/releases/download/v1.1.2/runc.amd64

runc.amd64 在课件里也有,大家可以手动上传到k 8s 的各个节点上

cp runc.amd64 /usr/local/sbin/runc

chmod +x /usr/local/sbin/runc

接下来生成 containerd 的配置文件:

mkdir -p /etc/containerd

containerd config default > /etc/containerd/config.toml

根据文档 Container runtimes 中的内容,对于使用 systemd 作为 init system 的 Linux 的发行版,使用 systemd 作为容器的 cgroup driver 可以确保服务器节点在资源紧张的情况更加稳定,因此这里配置各个节点上 containerd 的 cgroup driver 为 systemd。修改前面生成的配置文件 /etc/containerd/config.toml:

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]

...

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]

SystemdCgroup = true

再修改 /etc/containerd/config.toml 中的

[plugins."io.containerd.grpc.v1.cri"]

...

# sandbox_image = "k8s.gcr.io/pause:3.6"

sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.7"

配置 containerd 开机启动,并启动 containerd

systemctl enable containerd --now

启动containerd

systemctl start containerd

3 、安装初始化k 8s 需要的软件包

[root@xianchaomaster1 ~]# yum install -y kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1

[root@xianchaomaster1 ~]# systemctl enable kubelet

[root@xianchaonode1 ~]# yum install -y kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1

[root@xianchaonode1 ~]# systemctl enable kubelet

注:每个软件包的作用

K ubeadm : kubeadm是一个工具,用来初始化k 8s 集群的

kubelet : 安装在集群所有节点上,用于启动Pod的

kubectl : 通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

4 、k ubeadm 初始化k 8s 集群

#设置容器运行时

[root@xianchaonode1 ~]# crictl config runtime-endpoint /run/containerd/containerd.sock

[root@ xianchao master1~]# crictl config runtime-endpoint /run/containerd/containerd.sock

#使用kubeadm初始化k8s集群

[root@xianchaomaster1 ~]# kubeadm config print init-defaults > kubeadm.yaml

根据我们自己的需求修改配置,比如修改 imageRepository 的值,kube-proxy 的模式为 ipvs,需要注意的是由于我们使用的containerd作为运行时,所以在初始化节点的时候需要指定 cgroupDriver systemd

kubeadm.yaml 配置如下:

apiVersion: kubeadm.k8s.io/v1beta3

bootstrapTokens:

- groups:

- system:bootstrappers:kubeadm:default-node-token

token: abcdef.0123456789abcdef

ttl: 24h0m0s

usages:

- signing

- authentication

kind: InitConfiguration

localAPIEndpoint:

advertiseAddress: 192.168.40.180 # 控制节点的ip

bindPort: 6443

nodeRegistration:

criSocket: unix:///run/containerd/containerd.sock #用containerd作为容器运行时

imagePullPolicy: IfNotPresent

name: xianchaomaster1 #控制节点主机名

taints: null

---

apiServer:

timeoutForControlPlane: 4m0s

apiVersion: kubeadm.k8s.io/v1beta3

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns: {}

etcd:

local:

dataDir: /var/lib/etcd

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

# 指定阿里云镜像仓库地址

kind: ClusterConfiguration

kubernetesVersion: 1.24.1 #k8s版本

networking:

dnsDomain: cluster.local

podSubnet: 10.244.0.0/16 #指定pod网段

serviceSubnet: 10.96.0.0/16 #指定Service网段

scheduler: {}

---

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

mode: ipvs

---

apiVersion: kubelet.config.k8s.io/v1beta1

kind: KubeletConfiguration

cgroupDriver: systemd

#基于kubeadm .yaml 初始化 k8s 集群

[root@xianchaomaster1 ~]# kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification

显示如下,说明安装完成:

# 配置kubectl的配置文件 config ,相当于对kubectl进行授权,这样kubectl命令可以使用这个证书对k8s集群进行管理

[root@xianchaomaster1 ~]# mkdir -p $HOME/.kube

[root@xianchaomaster1 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@xianchaomaster1 ~]# sudo chown (id -u):(id -g) $HOME/.kube/config

[root@xianchaomaster1 ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

xianchaomaster1 Ready control-plane,master 2m25s v1.24.1

6 、扩容k 8s 集群-添加第一个工作节点

在xianchaomaster1上查看加入节点的命令:

[root@xianchaomaster1 ~]# kubeadm token create --print-join-command

显示如下:

kubeadm join 192.168.40.180:6443 --token vulvta.9ns7da3saibv4pg1 --discovery-token-ca-cert-hash sha256:72a0896e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a

把xianchaonode1加入k8s集群:

[root@xianchaonode1~]# kubeadm join 192.168.40.180:6443 --token vulvta.9ns7da3saibv4pg1 --discovery-token-ca-cert-hash sha256:72a0896e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a --ignore-preflight-errors=SystemVerification

#看到上面说明 xianchaonode1 节点已经加入到集群了,充当工作节点

#在xianchaomaster1上查看集群节点状况:

[root@xianchaomaster1 ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

xianchaomaster1 Ready control-plane,master 3m11s v1.24.1

xianchaonode1 Ready <none> 8s v1.24.1

# 可以对xianchaonode 1 打个标签,显示work

[root@xianchaomaster1 ~]# kubectl label nodes xianchaonode1 node-role.kubernetes.io/work=work

[root@xianchaomaster1 ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

xianchaomaster1 NotReady control-plane,master 27m v1.24.1

xianchaonode1 NotReady work 5m47s v1.24.1

8 、安装kubernetes网络组件-Calico

把安装calico需要的镜像calico .tar.gz 传到xianchao master1 和xianchao node1 节点,手动解压:

[root@xianchaonode1 ~]# ctr - n =k8s.io images import calico.tar.gz

[root@xianchao master 1 ~]# ctr - n =k8s.io images import calico.tar.gz

上传 calico.yaml 到xianchaomaster1上,使用yaml文件安装calico 网络插件 。

[root@xianchaomaster1 ~]# kubectl apply -f calico.yaml

注:在线下载配置文件地址是: https://docs.projectcalico.org/manifests/calico.yaml

[root@xianchaomaster1 ~]# kubectl get pod -n kube-system

再次查看集群状态。

[root@xianchaomaster1 ~]# kubectl get nodes

NAME STATUS ROLES AGE VERSION

xianchaomaster1 Ready control-plane,master 58m v1.24.1

xianchaonode1 Ready <none> 5m46s v1.24.1

[root@xianchaomaster1 ~]# kubectl get pods -n kube-system

NAME READY STATUS RESTARTS AGE

calico-kube-controllers-677cd97c8d-fmhct 1/1 Running 0 59s

calico-node-jt475 1/1 Running 0 59s

calico-node-q4zfw 1/1 Running 0 59s

coredns-65c54cc984-sd68l 1/1 Running 0 11m

coredns-65c54cc984-srxfv 1/1 Running 0 11m

etcd-xianchaomaster1 1/1 Running 0 11m

kube-apiserver-xianchaomaster1 1/1 Running 0 11m

kube-controller-manager-xianchaomaster1 1/1 Running 0 11m

kube-proxy-bhxbh 1/1 Running 0 11m

kube-proxy-twj5w 1/1 Running 0 8m29s

kube-scheduler-xianchaomaster1 1/1 Running 0 11m

# calico 的STATUS状态是Ready,说明k 8s 集群正常运行了

9 、测试在k 8s 创建pod是否可以正常访问网络

#把 busybox-1-28.tar.gz 上传到xianchaonode1节点,手动解压

[root@xianchaonode1 ~]# ctr images import busybox-1-28.tar.gz

[root@ xianchaomaster1 ~]# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh

/ # ping www.baidu.com

PING www.baidu.com (39.156.66.18): 56 data bytes

64 bytes from 39.156.66.18: seq=0 ttl=127 time=39.3 ms

# 通过上面可以看到能访问网络,说明calico网络插件已经被正常安装了

/ # exit # 退出Pod

10 、测试coredns是否正常

[root@ xianchaomaster1 ~]# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh

/ # nslookup kubernetes.default.svc.cluster.local

Server: 10.96.0.10

Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name: kubernetes.default.svc.cluster.local

Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local

10.96.0.10 就是我们coreDNS的clusterIP,说明coreDNS配置好了。

解析内部Service的名称,是通过coreDNS去 解析的。

# 注意:

b usybox 要用指定的1 .28 版本,不能用最新版本,最新版本,nslookup会解析不到dns和ip

相关推荐
肖永威5 分钟前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos
tian2kong8 分钟前
Centos 7 修改YUM镜像源地址为阿里云镜像地址
linux·阿里云·centos
mengao123410 分钟前
centos 服务器 docker 使用代理
服务器·docker·centos
布鲁格若门12 分钟前
CentOS 7 桌面版安装 cuda 12.4
linux·运维·centos·cuda
Eternal-Student17 分钟前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
C-cat.19 分钟前
Linux|进程程序替换
linux·服务器·microsoft
dessler20 分钟前
云计算&虚拟化-kvm-扩缩容cpu
linux·运维·云计算
怀澈12221 分钟前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
DC_BLOG24 分钟前
Linux-Apache静态资源
linux·运维·apache
学Linux的语莫25 分钟前
Ansible Playbook剧本用法
linux·服务器·云计算·ansible