二进制安装k8s v1.25.4 IPv4/IPv6双栈
阅读原文时间:2023年07月08日阅读:1

二进制安装k8s v1.25.4 IPv4/IPv6双栈

https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了

介绍

kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。

我使用IPV6的目的是在公网进行访问,所以我配置了IPV6静态地址。

若您没有IPV6环境,或者不想使用IPv6,不对主机进行配置IPv6地址即可。

不配置IPV6,不影响后续,不过集群依旧是支持IPv6的。为后期留有扩展可能性。

若不要IPv6 ,不给网卡配置IPv6即可,不要对IPv6相关配置删除或操作,否则会出问题。

强烈建议在Github上查看文档 !!!!!!

1.环境

主机名称

IP地址

说明

软件

Master01

192.168.8.61

master节点

kube-apiserver、kube-controller-manager、kube-scheduler、etcd、
kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx

Master02

192.168.8.62

master节点

kube-apiserver、kube-controller-manager、kube-scheduler、etcd、
kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx

Master03

192.168.8.63

master节点

kube-apiserver、kube-controller-manager、kube-scheduler、etcd、
kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx

Node01

192.168.8.64

node节点

kubelet、kube-proxy、nfs-client、nginx

Node02

192.168.8.65

node节点

kubelet、kube-proxy、nfs-client、nginx

192.168.8.66

VIP

软件

版本

kernel

6.0.11

CentOS 8

v8、 v7、Ubuntu

kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy

v1.25.4

etcd

v3.5.6

containerd

v1.6.10

docker

v20.10.21

cfssl

v1.6.3

cni

v1.1.1

crictl

v1.25.0

haproxy

v1.8.27

keepalived

v2.1.5

网段

物理主机:192.168.1.0/24

service:10.96.0.0/12

pod:172.16.0.0/12

安装包已经整理好:https://github.com/cby-chen/Kubernetes/releases/download/v1.25.0/kubernetes-v1.25.0.tar

1.2.配置IP

ssh root@192.168.8.157 "nmcli con mod ens33 ipv4.addresses 192.168.8.61/24; nmcli con mod ens33 ipv4.gateway 192.168.8.1; nmcli con mod ens33 ipv4.method manual; nmcli con mod ens33 ipv4.dns "8.8.8.8"; nmcli con up ens33"
ssh root@192.168.8.158 "nmcli con mod ens33 ipv4.addresses 192.168.8.62/24; nmcli con mod ens33 ipv4.gateway 192.168.8.1; nmcli con mod ens33 ipv4.method manual; nmcli con mod ens33 ipv4.dns "8.8.8.8"; nmcli con up ens33"
ssh root@192.168.8.160 "nmcli con mod ens33 ipv4.addresses 192.168.8.63/24; nmcli con mod ens33 ipv4.gateway 192.168.8.1; nmcli con mod ens33 ipv4.method manual; nmcli con mod ens33 ipv4.dns "8.8.8.8"; nmcli con up ens33"
ssh root@192.168.8.161 "nmcli con mod ens33 ipv4.addresses 192.168.8.64/24; nmcli con mod ens33 ipv4.gateway 192.168.8.1; nmcli con mod ens33 ipv4.method manual; nmcli con mod ens33 ipv4.dns "8.8.8.8"; nmcli con up ens33"
ssh root@192.168.8.162 "nmcli con mod ens33 ipv4.addresses 192.168.8.65/24; nmcli con mod ens33 ipv4.gateway 192.168.8.1; nmcli con mod ens33 ipv4.method manual; nmcli con mod ens33 ipv4.dns "8.8.8.8"; nmcli con up ens33"

# 没有IPv6选择不配置即可
ssh root@192.168.8.61 "nmcli con mod ens33 ipv6.addresses fc00:43f4:1eea:1::10; nmcli con mod ens33 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens33 ipv6.method manual; nmcli con mod ens33 ipv6.dns "2400:3200::1"; nmcli con up ens33"
ssh root@192.168.8.62 "nmcli con mod ens33 ipv6.addresses fc00:43f4:1eea:1::20; nmcli con mod ens33 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens33 ipv6.method manual; nmcli con mod ens33 ipv6.dns "2400:3200::1"; nmcli con up ens33"
ssh root@192.168.8.63 "nmcli con mod ens33 ipv6.addresses fc00:43f4:1eea:1::30; nmcli con mod ens33 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens33 ipv6.method manual; nmcli con mod ens33 ipv6.dns "2400:3200::1"; nmcli con up ens33"
ssh root@192.168.8.64 "nmcli con mod ens33 ipv6.addresses fc00:43f4:1eea:1::40; nmcli con mod ens33 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens33 ipv6.method manual; nmcli con mod ens33 ipv6.dns "2400:3200::1"; nmcli con up ens33"
ssh root@192.168.8.65 "nmcli con mod ens33 ipv6.addresses fc00:43f4:1eea:1::50; nmcli con mod ens33 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens33 ipv6.method manual; nmcli con mod ens33 ipv6.dns "2400:3200::1"; nmcli con up ens33"

# 查看网卡配置
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=424fd260-c480-4899-97e6-6fc9722031e8
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.8.61
PREFIX=24
GATEWAY=192.168.8.1
DNS1=8.8.8.8
IPV6ADDR=fc00:43f4:1eea:1::10/128
IPV6_DEFAULTGW=fc00:43f4:1eea:1::1
DNS2=2400:3200::1
[root@localhost ~]#

1.3.设置主机名

hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-master02
hostnamectl set-hostname k8s-master03
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02

1.4.配置yum源

# 对于 Ubuntu
sed -i 's/cn.archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

# 对于 CentOS 7
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo

# 对于 CentOS 8
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo

# 对于私有仓库
sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/\$contentdir|baseurl=http://192.168.1.123/centos|g' -i.bak  /etc/yum.repos.d/CentOS-*.repo

1.5.安装一些必备工具

# 对于 Ubuntu
apt update && apt upgrade -y && apt install -y wget psmisc vim net-tools nfs-kernel-server telnet lvm2 git tar curl

# 对于 CentOS 7
yum update -y && yum -y install  wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl

# 对于 CentOS 8
yum update -y && yum -y install wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl

1.6.选择性下载需要工具

1.下载kubernetes1.25.+的二进制包
github二进制包下载地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md

wget https://dl.k8s.io/v1.25.4/kubernetes-server-linux-amd64.tar.gz

2.下载etcdctl二进制包
github二进制包下载地址:https://github.com/etcd-io/etcd/releases

wget https://ghproxy.com/https://github.com/etcd-io/etcd/releases/download/v3.5.6/etcd-v3.5.6-linux-amd64.tar.gz

3.docker二进制包下载
二进制包下载地址:https://download.docker.com/linux/static/stable/x86_64/

wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.21.tgz

4.下载cri-docker 
二进制包下载地址:https://github.com/Mirantis/cri-dockerd/releases/

wget  https://ghproxy.com/https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.6/cri-dockerd-0.2.6.amd64.tgz

4.containerd下载时下载带cni插件的二进制包。
github下载地址:https://github.com/containerd/containerd/releases

wget https://ghproxy.com/https://github.com/containerd/containerd/releases/download/v1.6.10/cri-containerd-cni-1.6.10-linux-amd64.tar.gz

5.下载cfssl二进制包
github二进制包下载地址:https://github.com/cloudflare/cfssl/releases

wget https://ghproxy.com/https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssl_1.6.3_linux_amd64
wget https://ghproxy.com/https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssljson_1.6.3_linux_amd64
wget https://ghproxy.com/https://github.com/cloudflare/cfssl/releases/download/v1.6.3/cfssl-certinfo_1.6.3_linux_amd64

6.cni插件下载
github下载地址:https://github.com/containernetworking/plugins/releases

wget https://ghproxy.com/https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz

7.crictl客户端二进制下载
github下载:https://github.com/kubernetes-sigs/cri-tools/releases

wget https://ghproxy.com/https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.25.0/crictl-v1.25.0-linux-amd64.tar.gz

1.7.关闭防火墙

# Ubuntu忽略,CentOS执行
systemctl disable --now firewalld

1.8.关闭SELinux

# Ubuntu忽略,CentOS执行
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

1.9.关闭交换分区

sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a && sysctl -w vm.swappiness=0

cat /etc/fstab
# /dev/mapper/centos-swap swap                    swap    defaults        0 0

1.10.网络配置(俩种方式二选一)

# Ubuntu忽略,CentOS执行

# 方式一
# systemctl disable --now NetworkManager
# systemctl start network && systemctl enable network

# 方式二
cat&nbsp;>&nbsp;/etc/NetworkManager/conf.d/calico.conf&nbsp;<<&nbsp;EOF&nbsp;
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:tunl*
EOF
systemctl&nbsp;restart&nbsp;NetworkManager

1.11.进行时间同步

#&nbsp;服务端
#&nbsp;apt&nbsp;install&nbsp;chrony&nbsp;-y
yum&nbsp;install&nbsp;chrony&nbsp;-y
cat&nbsp;>&nbsp;/etc/chrony.conf&nbsp;<<&nbsp;EOF&nbsp;
pool&nbsp;ntp.aliyun.com&nbsp;iburst
driftfile&nbsp;/var/lib/chrony/drift
makestep&nbsp;1.0&nbsp;3
rtcsync
allow&nbsp;192.168.8.0/24
local&nbsp;stratum&nbsp;10
keyfile&nbsp;/etc/chrony.keys
leapsectz&nbsp;right/UTC
logdir&nbsp;/var/log/chrony
EOF

systemctl&nbsp;restart&nbsp;chronyd&nbsp;;&nbsp;systemctl&nbsp;enable&nbsp;chronyd

#&nbsp;客户端
#&nbsp;apt&nbsp;install&nbsp;chrony&nbsp;-y
yum&nbsp;install&nbsp;chrony&nbsp;-y
cat&nbsp;>&nbsp;/etc/chrony.conf&nbsp;<<&nbsp;EOF&nbsp;
pool&nbsp;192.168.8.61&nbsp;iburst
driftfile&nbsp;/var/lib/chrony/drift
makestep&nbsp;1.0&nbsp;3
rtcsync
keyfile&nbsp;/etc/chrony.keys
leapsectz&nbsp;right/UTC
logdir&nbsp;/var/log/chrony
EOF

systemctl&nbsp;restart&nbsp;chronyd&nbsp;;&nbsp;systemctl&nbsp;enable&nbsp;chronyd

#使用客户端进行验证
chronyc&nbsp;sources&nbsp;-v

1.12.配置ulimit

ulimit&nbsp;-SHn&nbsp;65535
cat&nbsp;>>&nbsp;/etc/security/limits.conf&nbsp;<<EOF
*&nbsp;soft&nbsp;nofile&nbsp;655360
*&nbsp;hard&nbsp;nofile&nbsp;131072
*&nbsp;soft&nbsp;nproc&nbsp;655350
*&nbsp;hard&nbsp;nproc&nbsp;655350
*&nbsp;seft&nbsp;memlock&nbsp;unlimited
*&nbsp;hard&nbsp;memlock&nbsp;unlimitedd
EOF

1.13.配置免密登录

#&nbsp;apt&nbsp;install&nbsp;-y&nbsp;sshpass
yum&nbsp;install&nbsp;-y&nbsp;sshpass
ssh-keygen&nbsp;-f&nbsp;/root/.ssh/id_rsa&nbsp;-P&nbsp;''
export&nbsp;IP="192.168.8.61&nbsp;192.168.8.62&nbsp;192.168.8.63&nbsp;192.168.8.64&nbsp;192.168.8.65"
export&nbsp;SSHPASS=123123
for&nbsp;HOST&nbsp;in&nbsp;$IP;do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sshpass&nbsp;-e&nbsp;ssh-copy-id&nbsp;-o&nbsp;StrictHostKeyChecking=no&nbsp;$HOST
done

1.14.添加启用源

#&nbsp;Ubuntu忽略,CentOS执行

#&nbsp;为&nbsp;RHEL-8或&nbsp;CentOS-8配置源
yum&nbsp;install&nbsp;https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm&nbsp;-y&nbsp;
sed&nbsp;-i&nbsp;"s@mirrorlist@#mirrorlist@g"&nbsp;/etc/yum.repos.d/elrepo.repo&nbsp;
sed&nbsp;-i&nbsp;"s@elrepo.org/linux@mirrors.tuna.tsinghua.edu.cn/elrepo@g"&nbsp;/etc/yum.repos.d/elrepo.repo&nbsp;

#&nbsp;为&nbsp;RHEL-7&nbsp;SL-7&nbsp;或&nbsp;CentOS-7&nbsp;安装&nbsp;ELRepo&nbsp;
yum&nbsp;install&nbsp;https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm&nbsp;-y&nbsp;
sed&nbsp;-i&nbsp;"s@mirrorlist@#mirrorlist@g"&nbsp;/etc/yum.repos.d/elrepo.repo&nbsp;
sed&nbsp;-i&nbsp;"s@elrepo.org/linux@mirrors.tuna.tsinghua.edu.cn/elrepo@g"&nbsp;/etc/yum.repos.d/elrepo.repo&nbsp;

#&nbsp;查看可用安装包
yum&nbsp;&nbsp;--disablerepo="*"&nbsp;&nbsp;--enablerepo="elrepo-kernel"&nbsp;&nbsp;list&nbsp;&nbsp;available

1.15.升级内核至4.18版本以上

#&nbsp;Ubuntu忽略,CentOS执行

#&nbsp;安装最新的内核
#&nbsp;我这里选择的是稳定版kernel-ml&nbsp;&nbsp;&nbsp;如需更新长期维护版本kernel-lt&nbsp;&nbsp;
yum&nbsp;-y&nbsp;--enablerepo=elrepo-kernel&nbsp;&nbsp;install&nbsp;&nbsp;kernel-ml

#&nbsp;查看已安装那些内核
rpm&nbsp;-qa&nbsp;|&nbsp;grep&nbsp;kernel

#&nbsp;查看默认内核
grubby&nbsp;--default-kernel

#&nbsp;若不是最新的使用命令设置
grubby&nbsp;--set-default&nbsp;$(ls&nbsp;/boot/vmlinuz-*&nbsp;|&nbsp;grep&nbsp;elrepo)

#&nbsp;重启生效
reboot

#&nbsp;v8&nbsp;整合命令为:
yum&nbsp;install&nbsp;https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm&nbsp;-y&nbsp;;&nbsp;sed&nbsp;-i&nbsp;"s@mirrorlist@#mirrorlist@g"&nbsp;/etc/yum.repos.d/elrepo.repo&nbsp;;&nbsp;sed&nbsp;-i&nbsp;"s@elrepo.org/linux@mirrors.tuna.tsinghua.edu.cn/elrepo@g"&nbsp;/etc/yum.repos.d/elrepo.repo&nbsp;;&nbsp;yum&nbsp;&nbsp;--disablerepo="*"&nbsp;&nbsp;--enablerepo="elrepo-kernel"&nbsp;&nbsp;list&nbsp;&nbsp;available&nbsp;-y&nbsp;;&nbsp;yum&nbsp;&nbsp;--enablerepo=elrepo-kernel&nbsp;&nbsp;install&nbsp;&nbsp;kernel-ml&nbsp;-y&nbsp;;&nbsp;grubby&nbsp;--default-kernel&nbsp;;&nbsp;reboot&nbsp;

#&nbsp;v7&nbsp;整合命令为:
yum&nbsp;install&nbsp;https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm&nbsp;-y&nbsp;;&nbsp;sed&nbsp;-i&nbsp;"s@mirrorlist@#mirrorlist@g"&nbsp;/etc/yum.repos.d/elrepo.repo&nbsp;;&nbsp;sed&nbsp;-i&nbsp;"s@elrepo.org/linux@mirrors.tuna.tsinghua.edu.cn/elrepo@g"&nbsp;/etc/yum.repos.d/elrepo.repo&nbsp;;&nbsp;yum&nbsp;&nbsp;--disablerepo="*"&nbsp;&nbsp;--enablerepo="elrepo-kernel"&nbsp;&nbsp;list&nbsp;&nbsp;available&nbsp;-y&nbsp;;&nbsp;yum&nbsp;&nbsp;--enablerepo=elrepo-kernel&nbsp;&nbsp;install&nbsp;&nbsp;kernel-ml&nbsp;-y&nbsp;;&nbsp;grubby&nbsp;--set-default&nbsp;$(ls&nbsp;/boot/vmlinuz-*&nbsp;|&nbsp;grep&nbsp;elrepo)&nbsp;;&nbsp;grubby&nbsp;--default-kernel&nbsp;;&nbsp;reboot

1.16.安装ipvsadm

#&nbsp;对于&nbsp;Ubuntu
#&nbsp;apt&nbsp;install&nbsp;ipvsadm&nbsp;ipset&nbsp;sysstat&nbsp;conntrack&nbsp;-y

#&nbsp;对于&nbsp;CentOS
yum&nbsp;install&nbsp;ipvsadm&nbsp;ipset&nbsp;sysstat&nbsp;conntrack&nbsp;libseccomp&nbsp;-y
cat&nbsp;>>&nbsp;/etc/modules-load.d/ipvs.conf&nbsp;<<EOF&nbsp;
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF

systemctl&nbsp;restart&nbsp;systemd-modules-load.service

lsmod&nbsp;|&nbsp;grep&nbsp;-e&nbsp;ip_vs&nbsp;-e&nbsp;nf_conntrack
ip_vs_sh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16384&nbsp;&nbsp;0
ip_vs_wrr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16384&nbsp;&nbsp;0
ip_vs_rr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16384&nbsp;&nbsp;0
ip_vs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;180224&nbsp;&nbsp;6&nbsp;ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;176128&nbsp;&nbsp;1&nbsp;ip_vs
nf_defrag_ipv6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24576&nbsp;&nbsp;2&nbsp;nf_conntrack,ip_vs
nf_defrag_ipv4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16384&nbsp;&nbsp;1&nbsp;nf_conntrack
libcrc32c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16384&nbsp;&nbsp;3&nbsp;nf_conntrack,xfs,ip_vs

1.17.修改内核参数

cat&nbsp;<<EOF&nbsp;>&nbsp;/etc/sysctl.d/k8s.conf
net.ipv4.ip_forward&nbsp;=&nbsp;1
net.bridge.bridge-nf-call-iptables&nbsp;=&nbsp;1
fs.may_detach_mounts&nbsp;=&nbsp;1
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.netfilter.nf_conntrack_max=2310720

net.ipv4.tcp_keepalive_time&nbsp;=&nbsp;600
net.ipv4.tcp_keepalive_probes&nbsp;=&nbsp;3
net.ipv4.tcp_keepalive_intvl&nbsp;=15
net.ipv4.tcp_max_tw_buckets&nbsp;=&nbsp;36000
net.ipv4.tcp_tw_reuse&nbsp;=&nbsp;1
net.ipv4.tcp_max_orphans&nbsp;=&nbsp;327680
net.ipv4.tcp_orphan_retries&nbsp;=&nbsp;3
net.ipv4.tcp_syncookies&nbsp;=&nbsp;1
net.ipv4.tcp_max_syn_backlog&nbsp;=&nbsp;16384
net.ipv4.ip_conntrack_max&nbsp;=&nbsp;65536
net.ipv4.tcp_max_syn_backlog&nbsp;=&nbsp;16384
net.ipv4.tcp_timestamps&nbsp;=&nbsp;0
net.core.somaxconn&nbsp;=&nbsp;16384

net.ipv6.conf.all.disable_ipv6&nbsp;=&nbsp;0
net.ipv6.conf.default.disable_ipv6&nbsp;=&nbsp;0
net.ipv6.conf.lo.disable_ipv6&nbsp;=&nbsp;0
net.ipv6.conf.all.forwarding&nbsp;=&nbsp;1
EOF

sysctl&nbsp;--system

1.18.所有节点配置hosts本地解析

cat&nbsp;>&nbsp;/etc/hosts&nbsp;<<EOF
127.0.0.1&nbsp;&nbsp;&nbsp;localhost&nbsp;localhost.localdomain&nbsp;localhost4&nbsp;localhost4.localdomain4
::1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localhost&nbsp;localhost.localdomain&nbsp;localhost6&nbsp;localhost6.localdomain6

192.168.8.61&nbsp;k8s-master01
192.168.8.62&nbsp;k8s-master02
192.168.8.63&nbsp;k8s-master03
192.168.8.64&nbsp;k8s-node01
192.168.8.65&nbsp;k8s-node02
192.168.8.66&nbsp;lb-vip
EOF

2.k8s基本组件安装

注意 :  2.1 和 2.2 二选其一即可

#&nbsp;wget&nbsp;https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz

cd&nbsp;kubernetes-v1.25.4/cby/

#创建cni插件所需目录
mkdir&nbsp;-p&nbsp;/etc/cni/net.d&nbsp;/opt/cni/bin&nbsp;
#解压cni二进制包
tar&nbsp;xf&nbsp;cni-plugins-linux-amd64-v*.tgz&nbsp;-C&nbsp;/opt/cni/bin/

#&nbsp;wget&nbsp;https://github.com/containerd/containerd/releases/download/v1.6.8/cri-containerd-cni-1.6.8-linux-amd64.tar.gz

#解压
tar&nbsp;-xzf&nbsp;cri-containerd-cni-*-linux-amd64.tar.gz&nbsp;-C&nbsp;/

#创建服务启动文件
cat&nbsp;>&nbsp;/etc/systemd/system/containerd.service&nbsp;<<EOF
[Unit]
Description=containerd&nbsp;container&nbsp;runtime
Documentation=https://containerd.io
After=network.target&nbsp;local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe&nbsp;overlay
ExecStart=/usr/local/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF

2.1.1配置Containerd所需的模块

cat&nbsp;<<EOF&nbsp;|&nbsp;sudo&nbsp;tee&nbsp;/etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

2.1.2加载模块

systemctl&nbsp;restart&nbsp;systemd-modules-load.service

2.1.3配置Containerd所需的内核

cat&nbsp;<<EOF&nbsp;|&nbsp;sudo&nbsp;tee&nbsp;/etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables&nbsp;&nbsp;=&nbsp;1
net.ipv4.ip_forward&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1
net.bridge.bridge-nf-call-ip6tables&nbsp;=&nbsp;1
EOF

#&nbsp;加载内核

sysctl&nbsp;--system

2.1.4创建Containerd的配置文件

#&nbsp;创建默认配置文件
mkdir&nbsp;-p&nbsp;/etc/containerd
containerd&nbsp;config&nbsp;default&nbsp;|&nbsp;tee&nbsp;/etc/containerd/config.toml

#&nbsp;修改Containerd的配置文件
sed&nbsp;-i&nbsp;"s#SystemdCgroup\&nbsp;\=\&nbsp;false#SystemdCgroup\&nbsp;\=\&nbsp;true#g"&nbsp;/etc/containerd/config.toml
cat&nbsp;/etc/containerd/config.toml&nbsp;|&nbsp;grep&nbsp;SystemdCgroup

sed&nbsp;-i&nbsp;"s#registry.k8s.io#registry.cn-hangzhou.aliyuncs.com/chenby#g"&nbsp;/etc/containerd/config.toml
cat&nbsp;/etc/containerd/config.toml&nbsp;|&nbsp;grep&nbsp;sandbox_image

sed&nbsp;-i&nbsp;"s#config_path\&nbsp;\=\&nbsp;\"\"#config_path\&nbsp;\=\&nbsp;\"/etc/containerd/certs.d\"#g"&nbsp;/etc/containerd/config.toml
cat&nbsp;/etc/containerd/config.toml&nbsp;|&nbsp;grep&nbsp;certs.d

mkdir&nbsp;/etc/containerd/certs.d/docker.io&nbsp;-pv

cat&nbsp;>&nbsp;/etc/containerd/certs.d/docker.io/hosts.toml&nbsp;<<&nbsp;EOF
server&nbsp;=&nbsp;"https://docker.io"
[host."https://hub-mirror.c.163.com"]
&nbsp;&nbsp;capabilities&nbsp;=&nbsp;["pull",&nbsp;"resolve"]
EOF

2.1.5启动并设置为开机启动

systemctl&nbsp;daemon-reload
systemctl&nbsp;enable&nbsp;--now&nbsp;containerd
systemctl&nbsp;restart&nbsp;containerd

2.1.6配置crictl客户端连接的运行时位置

#&nbsp;wget&nbsp;https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.24.2/crictl-v1.24.2-linux-amd64.tar.gz

#解压
tar&nbsp;xf&nbsp;crictl-v*-linux-amd64.tar.gz&nbsp;-C&nbsp;/usr/bin/
#生成配置文件
cat&nbsp;>&nbsp;/etc/crictl.yaml&nbsp;<<EOF
runtime-endpoint:&nbsp;unix:///run/containerd/containerd.sock
image-endpoint:&nbsp;unix:///run/containerd/containerd.sock
timeout:&nbsp;10
debug:&nbsp;false
EOF

#测试
systemctl&nbsp;restart&nbsp;&nbsp;containerd
crictl&nbsp;info

2.2.1 安装docker

#&nbsp;二进制包下载地址:https://download.docker.com/linux/static/stable/x86_64/
#&nbsp;wget&nbsp;https://download.docker.com/linux/static/stable/x86_64/docker-20.10.21.tgz

#解压
tar&nbsp;xf&nbsp;docker-*.tgz&nbsp;
#拷贝二进制文件
cp&nbsp;docker/*&nbsp;/usr/bin/
#创建containerd的service文件,并且启动
cat&nbsp;>/etc/systemd/system/containerd.service&nbsp;<<EOF
[Unit]
Description=containerd&nbsp;container&nbsp;runtime
Documentation=https://containerd.io
After=network.target&nbsp;local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe&nbsp;overlay
ExecStart=/usr/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=1048576
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF

systemctl&nbsp;enable&nbsp;--now&nbsp;containerd.service

#准备docker的service文件
cat&nbsp;>&nbsp;/etc/systemd/system/docker.service&nbsp;<<EOF
[Unit]
Description=Docker&nbsp;Application&nbsp;Container&nbsp;Engine
Documentation=https://docs.docker.com
After=network-online.target&nbsp;firewalld.service&nbsp;containerd.service
Wants=network-online.target
Requires=docker.socket&nbsp;containerd.service

[Service]
Type=notify
ExecStart=/usr/bin/dockerd&nbsp;-H&nbsp;fd://&nbsp;--containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill&nbsp;-s&nbsp;HUP&nbsp;$MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500

[Install]
WantedBy=multi-user.target
EOF
#准备docker的socket文件
cat&nbsp;>&nbsp;/etc/systemd/system/docker.socket&nbsp;<<EOF
[Unit]
Description=Docker&nbsp;Socket&nbsp;for&nbsp;the&nbsp;API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF

#创建docker组
groupadd&nbsp;docker
#启动docker
systemctl&nbsp;enable&nbsp;--now&nbsp;docker.socket&nbsp;&nbsp;&&&nbsp;systemctl&nbsp;enable&nbsp;--now&nbsp;docker.service
#验证
docker&nbsp;info

cat&nbsp;>/etc/docker/daemon.json&nbsp;<<EOF
{
&nbsp;&nbsp;"exec-opts":&nbsp;["native.cgroupdriver=systemd"],
&nbsp;&nbsp;"registry-mirrors":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;"https://docker.mirrors.ustc.edu.cn",
&nbsp;&nbsp;&nbsp;&nbsp;"http://hub-mirror.c.163.com"
&nbsp;&nbsp;],
&nbsp;&nbsp;"max-concurrent-downloads":&nbsp;10,
&nbsp;&nbsp;"log-driver":&nbsp;"json-file",
&nbsp;&nbsp;"log-level":&nbsp;"warn",
&nbsp;&nbsp;"log-opts":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"max-size":&nbsp;"10m",
&nbsp;&nbsp;&nbsp;&nbsp;"max-file":&nbsp;"3"
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;"data-root":&nbsp;"/var/lib/docker"
}
EOF
systemctl&nbsp;restart&nbsp;docker

2.2.2 安装cri-docker

#&nbsp;由于1.24以及更高版本不支持docker所以安装cri-docker
#&nbsp;下载cri-docker&nbsp;
#&nbsp;wget&nbsp;&nbsp;https://ghproxy.com/https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.5/cri-dockerd-0.2.5.amd64.tgz

#&nbsp;解压cri-docker
tar&nbsp;xvf&nbsp;cri-dockerd-*.amd64.tgz&nbsp;
cp&nbsp;cri-dockerd/cri-dockerd&nbsp;&nbsp;/usr/bin/

#&nbsp;写入启动配置文件
cat&nbsp;>&nbsp;&nbsp;/usr/lib/systemd/system/cri-docker.service&nbsp;<<EOF
[Unit]
Description=CRI&nbsp;Interface&nbsp;for&nbsp;Docker&nbsp;Application&nbsp;Container&nbsp;Engine
Documentation=https://docs.mirantis.com
After=network-online.target&nbsp;firewalld.service&nbsp;docker.service
Wants=network-online.target
Requires=cri-docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd&nbsp;--network-plugin=cni&nbsp;--pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill&nbsp;-s&nbsp;HUP&nbsp;$MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

StartLimitBurst=3

StartLimitInterval=60s

LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target
EOF

#&nbsp;写入socket配置文件
cat&nbsp;>&nbsp;/usr/lib/systemd/system/cri-docker.socket&nbsp;<<EOF
[Unit]
Description=CRI&nbsp;Docker&nbsp;Socket&nbsp;for&nbsp;the&nbsp;API
PartOf=cri-docker.service

[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
EOF

#&nbsp;进行启动cri-docker
systemctl&nbsp;daemon-reload&nbsp;;&nbsp;systemctl&nbsp;enable&nbsp;cri-docker&nbsp;--now

2.3.1解压k8s安装包

#&nbsp;下载安装包
#&nbsp;wget&nbsp;https://dl.k8s.io/v1.25.4/kubernetes-server-linux-amd64.tar.gz
#&nbsp;wget&nbsp;https://github.com/etcd-io/etcd/releases/download/v3.5.6/etcd-v3.5.6-linux-amd64.tar.gz

#&nbsp;解压k8s安装文件
cd&nbsp;cby
tar&nbsp;-xf&nbsp;kubernetes-server-linux-amd64.tar.gz&nbsp;&nbsp;--strip-components=3&nbsp;-C&nbsp;/usr/local/bin&nbsp;kubernetes/server/bin/kube{let,ctl,-apiserver,-controller-manager,-scheduler,-proxy}

#&nbsp;解压etcd安装文件
tar&nbsp;-xf&nbsp;etcd*.tar.gz&nbsp;&&&nbsp;mv&nbsp;etcd-*/etcd&nbsp;/usr/local/bin/&nbsp;&&&nbsp;mv&nbsp;etcd-*/etcdctl&nbsp;/usr/local/bin/

#&nbsp;查看/usr/local/bin下内容

ls&nbsp;/usr/local/bin/
containerd&nbsp;&nbsp;containerd-shim-runc-v1&nbsp;&nbsp;containerd-stress&nbsp;&nbsp;critest&nbsp;&nbsp;ctr&nbsp;&nbsp;&nbsp;etcdctl&nbsp;&nbsp;kube-controller-manager&nbsp;&nbsp;kubelet&nbsp;&nbsp;kube-scheduler&nbsp;&nbsp;containerd-shim&nbsp;&nbsp;containerd-shim-runc-v2&nbsp;&nbsp;crictl&nbsp;&nbsp;ctd-decoder&nbsp;&nbsp;etcd&nbsp;&nbsp;kube-apiserver&nbsp;&nbsp;kubectl&nbsp;&nbsp;kube-proxy

2.3.2查看版本

[root@k8s-master01&nbsp;~]#&nbsp;&nbsp;kubelet&nbsp;--version
Kubernetes&nbsp;v1.25.4
[root@k8s-master01&nbsp;~]#&nbsp;etcdctl&nbsp;version
etcdctl&nbsp;version:&nbsp;3.5.6
API&nbsp;version:&nbsp;3.5
[root@k8s-master01&nbsp;~]#

2.3.3将组件发送至其他k8s节点

Master='k8s-master02&nbsp;k8s-master03'
Work='k8s-node01&nbsp;k8s-node02'

for&nbsp;NODE&nbsp;in&nbsp;$Master;&nbsp;do&nbsp;echo&nbsp;$NODE;&nbsp;scp&nbsp;/usr/local/bin/kube{let,ctl,-apiserver,-controller-manager,-scheduler,-proxy}&nbsp;$NODE:/usr/local/bin/;&nbsp;scp&nbsp;/usr/local/bin/etcd*&nbsp;$NODE:/usr/local/bin/;&nbsp;done

for&nbsp;NODE&nbsp;in&nbsp;$Work;&nbsp;do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scp&nbsp;/usr/local/bin/kube{let,-proxy}&nbsp;$NODE:/usr/local/bin/&nbsp;;&nbsp;done

mkdir&nbsp;-p&nbsp;/opt/cni/bin

mkdir&nbsp;pki
cd&nbsp;pki
cat&nbsp;>&nbsp;admin-csr.json&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"admin",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"names":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"C":&nbsp;"CN",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ST":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"L":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"O":&nbsp;"system:masters",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"OU":&nbsp;"Kubernetes-manual"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;]
}
EOF

cat&nbsp;>&nbsp;ca-config.json&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"signing":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"default":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"expiry":&nbsp;"876000h"
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;"profiles":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"kubernetes":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"usages":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"signing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"key&nbsp;encipherment",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"server&nbsp;auth",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"client&nbsp;auth"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;],
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"expiry":&nbsp;"876000h"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
}
EOF

cat&nbsp;>&nbsp;etcd-ca-csr.json&nbsp;&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"etcd",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"names":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"C":&nbsp;"CN",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ST":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"L":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"O":&nbsp;"etcd",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"OU":&nbsp;"Etcd&nbsp;Security"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;],
&nbsp;&nbsp;"ca":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"expiry":&nbsp;"876000h"
&nbsp;&nbsp;}
}
EOF

cat&nbsp;>&nbsp;front-proxy-ca-csr.json&nbsp;&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"kubernetes",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"ca":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"expiry":&nbsp;"876000h"
&nbsp;&nbsp;}
}
EOF

cat&nbsp;>&nbsp;kubelet-csr.json&nbsp;&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"system:node:\$NODE",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"names":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"C":&nbsp;"CN",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"L":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ST":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"O":&nbsp;"system:nodes",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"OU":&nbsp;"Kubernetes-manual"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;]
}
EOF

cat&nbsp;>&nbsp;manager-csr.json&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"system:kube-controller-manager",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"names":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"C":&nbsp;"CN",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ST":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"L":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"O":&nbsp;"system:kube-controller-manager",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"OU":&nbsp;"Kubernetes-manual"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;]
}
EOF

cat&nbsp;>&nbsp;apiserver-csr.json&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"kube-apiserver",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"names":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"C":&nbsp;"CN",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ST":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"L":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"O":&nbsp;"Kubernetes",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"OU":&nbsp;"Kubernetes-manual"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;]
}
EOF

cat&nbsp;>&nbsp;ca-csr.json&nbsp;&nbsp;&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"kubernetes",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"names":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"C":&nbsp;"CN",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ST":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"L":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"O":&nbsp;"Kubernetes",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"OU":&nbsp;"Kubernetes-manual"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;],
&nbsp;&nbsp;"ca":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"expiry":&nbsp;"876000h"
&nbsp;&nbsp;}
}
EOF

cat&nbsp;>&nbsp;etcd-csr.json&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"etcd",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"names":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"C":&nbsp;"CN",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ST":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"L":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"O":&nbsp;"etcd",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"OU":&nbsp;"Etcd&nbsp;Security"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;]
}
EOF

cat&nbsp;>&nbsp;front-proxy-client-csr.json&nbsp;&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"front-proxy-client",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;}
}
EOF

cat&nbsp;>&nbsp;kube-proxy-csr.json&nbsp;&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"system:kube-proxy",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"names":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"C":&nbsp;"CN",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ST":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"L":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"O":&nbsp;"system:kube-proxy",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"OU":&nbsp;"Kubernetes-manual"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;]
}
EOF

cat&nbsp;>&nbsp;scheduler-csr.json&nbsp;<<&nbsp;EOF&nbsp;
{
&nbsp;&nbsp;"CN":&nbsp;"system:kube-scheduler",
&nbsp;&nbsp;"key":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;"algo":&nbsp;"rsa",
&nbsp;&nbsp;&nbsp;&nbsp;"size":&nbsp;2048
&nbsp;&nbsp;},
&nbsp;&nbsp;"names":&nbsp;[
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"C":&nbsp;"CN",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ST":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"L":&nbsp;"Beijing",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"O":&nbsp;"system:kube-scheduler",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"OU":&nbsp;"Kubernetes-manual"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;]
}
EOF

cd&nbsp;..
mkdir&nbsp;bootstrap
cd&nbsp;bootstrap
cat&nbsp;>&nbsp;bootstrap.secret.yaml&nbsp;<<&nbsp;EOF&nbsp;
apiVersion:&nbsp;v1
kind:&nbsp;Secret
metadata:
&nbsp;&nbsp;name:&nbsp;bootstrap-token-c8ad9c
&nbsp;&nbsp;namespace:&nbsp;kube-system
type:&nbsp;bootstrap.kubernetes.io/token
stringData:
&nbsp;&nbsp;description:&nbsp;"The&nbsp;default&nbsp;bootstrap&nbsp;token&nbsp;generated&nbsp;by&nbsp;'kubelet&nbsp;'."
&nbsp;&nbsp;token-id:&nbsp;c8ad9c
&nbsp;&nbsp;token-secret:&nbsp;2e4d610cf3e7426e
&nbsp;&nbsp;usage-bootstrap-authentication:&nbsp;"true"
&nbsp;&nbsp;usage-bootstrap-signing:&nbsp;"true"
&nbsp;&nbsp;auth-extra-groups:&nbsp;&nbsp;system:bootstrappers:default-node-token,system:bootstrappers:worker,system:bootstrappers:ingress

---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRoleBinding
metadata:
&nbsp;&nbsp;name:&nbsp;kubelet-bootstrap
roleRef:
&nbsp;&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;ClusterRole
&nbsp;&nbsp;name:&nbsp;system:node-bootstrapper
subjects:
-&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;Group
&nbsp;&nbsp;name:&nbsp;system:bootstrappers:default-node-token
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRoleBinding
metadata:
&nbsp;&nbsp;name:&nbsp;node-autoapprove-bootstrap
roleRef:
&nbsp;&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;ClusterRole
&nbsp;&nbsp;name:&nbsp;system:certificates.k8s.io:certificatesigningrequests:nodeclient
subjects:
-&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;Group
&nbsp;&nbsp;name:&nbsp;system:bootstrappers:default-node-token
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRoleBinding
metadata:
&nbsp;&nbsp;name:&nbsp;node-autoapprove-certificate-rotation
roleRef:
&nbsp;&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;ClusterRole
&nbsp;&nbsp;name:&nbsp;system:certificates.k8s.io:certificatesigningrequests:selfnodeclient
subjects:
-&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;Group
&nbsp;&nbsp;name:&nbsp;system:nodes
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRole
metadata:
&nbsp;&nbsp;annotations:
&nbsp;&nbsp;&nbsp;&nbsp;rbac.authorization.kubernetes.io/autoupdate:&nbsp;"true"
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;kubernetes.io/bootstrapping:&nbsp;rbac-defaults
&nbsp;&nbsp;name:&nbsp;system:kube-apiserver-to-kubelet
rules:
&nbsp;&nbsp;-&nbsp;apiGroups:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;""
&nbsp;&nbsp;&nbsp;&nbsp;resources:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;nodes/proxy
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;nodes/stats
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;nodes/log
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;nodes/spec
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;nodes/metrics
&nbsp;&nbsp;&nbsp;&nbsp;verbs:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;"*"
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRoleBinding
metadata:
&nbsp;&nbsp;name:&nbsp;system:kube-apiserver
&nbsp;&nbsp;namespace:&nbsp;""
roleRef:
&nbsp;&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;ClusterRole
&nbsp;&nbsp;name:&nbsp;system:kube-apiserver-to-kubelet
subjects:
&nbsp;&nbsp;-&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;&nbsp;&nbsp;kind:&nbsp;User
&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;kube-apiserver
EOF

cd&nbsp;..
mkdir&nbsp;coredns
cd&nbsp;coredns
cat&nbsp;>&nbsp;coredns.yaml&nbsp;<<&nbsp;EOF&nbsp;
apiVersion:&nbsp;v1
kind:&nbsp;ServiceAccount
metadata:
&nbsp;&nbsp;name:&nbsp;coredns
&nbsp;&nbsp;namespace:&nbsp;kube-system
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRole
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;kubernetes.io/bootstrapping:&nbsp;rbac-defaults
&nbsp;&nbsp;name:&nbsp;system:coredns
rules:
&nbsp;&nbsp;-&nbsp;apiGroups:
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;""
&nbsp;&nbsp;&nbsp;&nbsp;resources:
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;endpoints
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;services
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;pods
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;namespaces
&nbsp;&nbsp;&nbsp;&nbsp;verbs:
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;list
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;watch
&nbsp;&nbsp;-&nbsp;apiGroups:
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;discovery.k8s.io
&nbsp;&nbsp;&nbsp;&nbsp;resources:
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;endpointslices
&nbsp;&nbsp;&nbsp;&nbsp;verbs:
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;list
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;watch
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRoleBinding
metadata:
&nbsp;&nbsp;annotations:
&nbsp;&nbsp;&nbsp;&nbsp;rbac.authorization.kubernetes.io/autoupdate:&nbsp;"true"
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;kubernetes.io/bootstrapping:&nbsp;rbac-defaults
&nbsp;&nbsp;name:&nbsp;system:coredns
roleRef:
&nbsp;&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;ClusterRole
&nbsp;&nbsp;name:&nbsp;system:coredns
subjects:
-&nbsp;kind:&nbsp;ServiceAccount
&nbsp;&nbsp;name:&nbsp;coredns
&nbsp;&nbsp;namespace:&nbsp;kube-system
---
apiVersion:&nbsp;v1
kind:&nbsp;ConfigMap
metadata:
&nbsp;&nbsp;name:&nbsp;coredns
&nbsp;&nbsp;namespace:&nbsp;kube-system
data:
&nbsp;&nbsp;Corefile:&nbsp;|
&nbsp;&nbsp;&nbsp;&nbsp;.:53&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errors
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;health&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lameduck&nbsp;5s
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ready
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kubernetes&nbsp;cluster.local&nbsp;in-addr.arpa&nbsp;ip6.arpa&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fallthrough&nbsp;in-addr.arpa&nbsp;ip6.arpa
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prometheus&nbsp;:9153
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forward&nbsp;.&nbsp;/etc/resolv.conf&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_concurrent&nbsp;1000
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cache&nbsp;30
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reload
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loadbalance
&nbsp;&nbsp;&nbsp;&nbsp;}
---
apiVersion:&nbsp;apps/v1
kind:&nbsp;Deployment
metadata:
&nbsp;&nbsp;name:&nbsp;coredns
&nbsp;&nbsp;namespace:&nbsp;kube-system
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;kube-dns
&nbsp;&nbsp;&nbsp;&nbsp;kubernetes.io/name:&nbsp;"CoreDNS"
spec:
&nbsp;&nbsp;#&nbsp;replicas:&nbsp;not&nbsp;specified&nbsp;here:
&nbsp;&nbsp;#&nbsp;1.&nbsp;Default&nbsp;is&nbsp;1.
&nbsp;&nbsp;#&nbsp;2.&nbsp;Will&nbsp;be&nbsp;tuned&nbsp;in&nbsp;real&nbsp;time&nbsp;if&nbsp;DNS&nbsp;horizontal&nbsp;auto-scaling&nbsp;is&nbsp;turned&nbsp;on.
&nbsp;&nbsp;strategy:
&nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;RollingUpdate
&nbsp;&nbsp;&nbsp;&nbsp;rollingUpdate:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxUnavailable:&nbsp;1
&nbsp;&nbsp;selector:
&nbsp;&nbsp;&nbsp;&nbsp;matchLabels:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;kube-dns
&nbsp;&nbsp;template:
&nbsp;&nbsp;&nbsp;&nbsp;metadata:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;kube-dns
&nbsp;&nbsp;&nbsp;&nbsp;spec:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;priorityClassName:&nbsp;system-cluster-critical
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serviceAccountName:&nbsp;coredns
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tolerations:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;key:&nbsp;"CriticalAddonsOnly"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;operator:&nbsp;"Exists"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodeSelector:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kubernetes.io/os:&nbsp;linux
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;affinity:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;podAntiAffinity:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preferredDuringSchedulingIgnoredDuringExecution:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;weight:&nbsp;100
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;podAffinityTerm:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labelSelector:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matchExpressions:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;key:&nbsp;k8s-app
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;operator:&nbsp;In
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values:&nbsp;["kube-dns"]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;topologyKey:&nbsp;kubernetes.io/hostname
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;containers:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;coredns
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;registry.cn-beijing.aliyuncs.com/dotbalo/coredns:1.8.6&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagePullPolicy:&nbsp;IfNotPresent
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resources:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory:&nbsp;170Mi
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requests:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpu:&nbsp;100m
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory:&nbsp;70Mi
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args:&nbsp;[&nbsp;"-conf",&nbsp;"/etc/coredns/Corefile"&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volumeMounts:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;config-volume
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mountPath:&nbsp;/etc/coredns
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readOnly:&nbsp;true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ports:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;containerPort:&nbsp;53
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;dns
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protocol:&nbsp;UDP
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;containerPort:&nbsp;53
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;dns-tcp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protocol:&nbsp;TCP
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;containerPort:&nbsp;9153
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;metrics
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protocol:&nbsp;TCP
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;securityContext:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allowPrivilegeEscalation:&nbsp;false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;capabilities:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;NET_BIND_SERVICE
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drop:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;all
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readOnlyRootFilesystem:&nbsp;true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;livenessProbe:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpGet:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path:&nbsp;/health
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port:&nbsp;8080
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheme:&nbsp;HTTP
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initialDelaySeconds:&nbsp;60
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeoutSeconds:&nbsp;5
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;successThreshold:&nbsp;1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;failureThreshold:&nbsp;5
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readinessProbe:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpGet:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path:&nbsp;/ready
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port:&nbsp;8181
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheme:&nbsp;HTTP
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dnsPolicy:&nbsp;Default
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volumes:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;config-volume
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configMap:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;coredns
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;key:&nbsp;Corefile
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path:&nbsp;Corefile
---
apiVersion:&nbsp;v1
kind:&nbsp;Service
metadata:
&nbsp;&nbsp;name:&nbsp;kube-dns
&nbsp;&nbsp;namespace:&nbsp;kube-system
&nbsp;&nbsp;annotations:
&nbsp;&nbsp;&nbsp;&nbsp;prometheus.io/port:&nbsp;"9153"
&nbsp;&nbsp;&nbsp;&nbsp;prometheus.io/scrape:&nbsp;"true"
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;kube-dns
&nbsp;&nbsp;&nbsp;&nbsp;kubernetes.io/cluster-service:&nbsp;"true"
&nbsp;&nbsp;&nbsp;&nbsp;kubernetes.io/name:&nbsp;"CoreDNS"
spec:
&nbsp;&nbsp;selector:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;kube-dns
&nbsp;&nbsp;clusterIP:&nbsp;10.96.0.10&nbsp;
&nbsp;&nbsp;ports:
&nbsp;&nbsp;-&nbsp;name:&nbsp;dns
&nbsp;&nbsp;&nbsp;&nbsp;port:&nbsp;53
&nbsp;&nbsp;&nbsp;&nbsp;protocol:&nbsp;UDP
&nbsp;&nbsp;-&nbsp;name:&nbsp;dns-tcp
&nbsp;&nbsp;&nbsp;&nbsp;port:&nbsp;53
&nbsp;&nbsp;&nbsp;&nbsp;protocol:&nbsp;TCP
&nbsp;&nbsp;-&nbsp;name:&nbsp;metrics
&nbsp;&nbsp;&nbsp;&nbsp;port:&nbsp;9153
&nbsp;&nbsp;&nbsp;&nbsp;protocol:&nbsp;TCP
EOF

cd&nbsp;..
mkdir&nbsp;metrics-server
cd&nbsp;metrics-server
cat&nbsp;>&nbsp;metrics-server.yaml&nbsp;<<&nbsp;EOF&nbsp;
apiVersion:&nbsp;v1
kind:&nbsp;ServiceAccount
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;name:&nbsp;metrics-server
&nbsp;&nbsp;namespace:&nbsp;kube-system
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRole
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;&nbsp;&nbsp;rbac.authorization.k8s.io/aggregate-to-admin:&nbsp;"true"
&nbsp;&nbsp;&nbsp;&nbsp;rbac.authorization.k8s.io/aggregate-to-edit:&nbsp;"true"
&nbsp;&nbsp;&nbsp;&nbsp;rbac.authorization.k8s.io/aggregate-to-view:&nbsp;"true"
&nbsp;&nbsp;name:&nbsp;system:aggregated-metrics-reader
rules:
-&nbsp;apiGroups:
&nbsp;&nbsp;-&nbsp;metrics.k8s.io
&nbsp;&nbsp;resources:
&nbsp;&nbsp;-&nbsp;pods
&nbsp;&nbsp;-&nbsp;nodes
&nbsp;&nbsp;verbs:
&nbsp;&nbsp;-&nbsp;get
&nbsp;&nbsp;-&nbsp;list
&nbsp;&nbsp;-&nbsp;watch
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRole
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;name:&nbsp;system:metrics-server
rules:
-&nbsp;apiGroups:
&nbsp;&nbsp;-&nbsp;""
&nbsp;&nbsp;resources:
&nbsp;&nbsp;-&nbsp;pods
&nbsp;&nbsp;-&nbsp;nodes
&nbsp;&nbsp;-&nbsp;nodes/stats
&nbsp;&nbsp;-&nbsp;namespaces
&nbsp;&nbsp;-&nbsp;configmaps
&nbsp;&nbsp;verbs:
&nbsp;&nbsp;-&nbsp;get
&nbsp;&nbsp;-&nbsp;list
&nbsp;&nbsp;-&nbsp;watch
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;RoleBinding
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;name:&nbsp;metrics-server-auth-reader
&nbsp;&nbsp;namespace:&nbsp;kube-system
roleRef:
&nbsp;&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;Role
&nbsp;&nbsp;name:&nbsp;extension-apiserver-authentication-reader
subjects:
-&nbsp;kind:&nbsp;ServiceAccount
&nbsp;&nbsp;name:&nbsp;metrics-server
&nbsp;&nbsp;namespace:&nbsp;kube-system
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRoleBinding
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;name:&nbsp;metrics-server:system:auth-delegator
roleRef:
&nbsp;&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;ClusterRole
&nbsp;&nbsp;name:&nbsp;system:auth-delegator
subjects:
-&nbsp;kind:&nbsp;ServiceAccount
&nbsp;&nbsp;name:&nbsp;metrics-server
&nbsp;&nbsp;namespace:&nbsp;kube-system
---
apiVersion:&nbsp;rbac.authorization.k8s.io/v1
kind:&nbsp;ClusterRoleBinding
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;name:&nbsp;system:metrics-server
roleRef:
&nbsp;&nbsp;apiGroup:&nbsp;rbac.authorization.k8s.io
&nbsp;&nbsp;kind:&nbsp;ClusterRole
&nbsp;&nbsp;name:&nbsp;system:metrics-server
subjects:
-&nbsp;kind:&nbsp;ServiceAccount
&nbsp;&nbsp;name:&nbsp;metrics-server
&nbsp;&nbsp;namespace:&nbsp;kube-system
---
apiVersion:&nbsp;v1
kind:&nbsp;Service
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;name:&nbsp;metrics-server
&nbsp;&nbsp;namespace:&nbsp;kube-system
spec:
&nbsp;&nbsp;ports:
&nbsp;&nbsp;-&nbsp;name:&nbsp;https
&nbsp;&nbsp;&nbsp;&nbsp;port:&nbsp;443
&nbsp;&nbsp;&nbsp;&nbsp;protocol:&nbsp;TCP
&nbsp;&nbsp;&nbsp;&nbsp;targetPort:&nbsp;https
&nbsp;&nbsp;selector:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
---
apiVersion:&nbsp;apps/v1
kind:&nbsp;Deployment
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;name:&nbsp;metrics-server
&nbsp;&nbsp;namespace:&nbsp;kube-system
spec:
&nbsp;&nbsp;selector:
&nbsp;&nbsp;&nbsp;&nbsp;matchLabels:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;strategy:
&nbsp;&nbsp;&nbsp;&nbsp;rollingUpdate:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxUnavailable:&nbsp;0
&nbsp;&nbsp;template:
&nbsp;&nbsp;&nbsp;&nbsp;metadata:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;&nbsp;&nbsp;spec:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;containers:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;args:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--cert-dir=/tmp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--secure-port=4443
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--kubelet-use-node-status-port
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--metric-resolution=15s
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--kubelet-insecure-tls
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem&nbsp;#&nbsp;change&nbsp;to&nbsp;front-proxy-ca.crt&nbsp;for&nbsp;kubeadm
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--requestheader-username-headers=X-Remote-User
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--requestheader-group-headers=X-Remote-Group
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;--requestheader-extra-headers-prefix=X-Remote-Extra-
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;registry.cn-beijing.aliyuncs.com/dotbalo/metrics-server:0.5.0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagePullPolicy:&nbsp;IfNotPresent
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;livenessProbe:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;failureThreshold:&nbsp;3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpGet:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path:&nbsp;/livez
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port:&nbsp;https
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheme:&nbsp;HTTPS
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;periodSeconds:&nbsp;10
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;metrics-server
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ports:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;containerPort:&nbsp;4443
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;https
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protocol:&nbsp;TCP
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readinessProbe:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;failureThreshold:&nbsp;3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpGet:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path:&nbsp;/readyz
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port:&nbsp;https
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheme:&nbsp;HTTPS
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initialDelaySeconds:&nbsp;20
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;periodSeconds:&nbsp;10
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resources:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requests:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpu:&nbsp;100m
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory:&nbsp;200Mi
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;securityContext:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readOnlyRootFilesystem:&nbsp;true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runAsNonRoot:&nbsp;true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runAsUser:&nbsp;1000
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volumeMounts:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;mountPath:&nbsp;/tmp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;tmp-dir
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;ca-ssl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mountPath:&nbsp;/etc/kubernetes/pki
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodeSelector:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kubernetes.io/os:&nbsp;linux
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;priorityClassName:&nbsp;system-cluster-critical
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serviceAccountName:&nbsp;metrics-server
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volumes:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;emptyDir:&nbsp;{}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;tmp-dir
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;ca-ssl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hostPath:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path:&nbsp;/etc/kubernetes/pki

---
apiVersion:&nbsp;apiregistration.k8s.io/v1
kind:&nbsp;APIService
metadata:
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;k8s-app:&nbsp;metrics-server
&nbsp;&nbsp;name:&nbsp;v1beta1.metrics.k8s.io
spec:
&nbsp;&nbsp;group:&nbsp;metrics.k8s.io
&nbsp;&nbsp;groupPriorityMinimum:&nbsp;100
&nbsp;&nbsp;insecureSkipTLSVerify:&nbsp;true
&nbsp;&nbsp;service:
&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;metrics-server
&nbsp;&nbsp;&nbsp;&nbsp;namespace:&nbsp;kube-system
&nbsp;&nbsp;version:&nbsp;v1beta1
&nbsp;&nbsp;versionPriority:&nbsp;100
EOF

3.相关证书生成

#&nbsp;master01节点下载证书生成工具
#&nbsp;wget&nbsp;"https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl_1.6.2_linux_amd64"&nbsp;-O&nbsp;/usr/local/bin/cfssl
#&nbsp;wget&nbsp;"https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssljson_1.6.2_linux_amd64"&nbsp;-O&nbsp;/usr/local/bin/cfssljson

#&nbsp;软件包内有
cp&nbsp;cfssl_*_linux_amd64&nbsp;/usr/local/bin/cfssl
cp&nbsp;cfssljson_*_linux_amd64&nbsp;/usr/local/bin/cfssljson

chmod&nbsp;+x&nbsp;/usr/local/bin/cfssl&nbsp;/usr/local/bin/cfssljson

特别说明除外,以下操作在所有master节点操作

3.1.1所有master节点创建证书存放目录

mkdir&nbsp;/etc/etcd/ssl&nbsp;-p

3.1.2master01节点生成etcd证书

cd&nbsp;pki
#&nbsp;生成etcd证书和etcd证书的key(如果你觉得以后可能会扩容,可以在ip那多写几个预留出来)
#&nbsp;若没有IPv6&nbsp;可删除可保留&nbsp;
cfssl&nbsp;gencert&nbsp;-initca&nbsp;etcd-ca-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/etcd/ssl/etcd-ca
cfssl&nbsp;gencert&nbsp;\
&nbsp;&nbsp;&nbsp;-ca=/etc/etcd/ssl/etcd-ca.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-ca-key=/etc/etcd/ssl/etcd-ca-key.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-config=ca-config.json&nbsp;\
&nbsp;&nbsp;&nbsp;-hostname=127.0.0.1,k8s-master01,k8s-master02,k8s-master03,192.168.8.61,192.168.8.62,192.168.8.63,fc00:43f4:1eea:1::10,fc00:43f4:1eea:1::20,fc00:43f4:1eea:1::30&nbsp;\
&nbsp;&nbsp;&nbsp;-profile=kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;etcd-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/etcd/ssl/etcd

3.1.3将证书复制到其他节点

Master='k8s-master02&nbsp;k8s-master03'
for&nbsp;NODE&nbsp;in&nbsp;$Master;&nbsp;do&nbsp;ssh&nbsp;$NODE&nbsp;"mkdir&nbsp;-p&nbsp;/etc/etcd/ssl";&nbsp;for&nbsp;FILE&nbsp;in&nbsp;etcd-ca-key.pem&nbsp;&nbsp;etcd-ca.pem&nbsp;&nbsp;etcd-key.pem&nbsp;&nbsp;etcd.pem;&nbsp;do&nbsp;scp&nbsp;/etc/etcd/ssl/${FILE}&nbsp;$NODE:/etc/etcd/ssl/${FILE};&nbsp;done;&nbsp;done

特别说明除外,以下操作在所有master节点操作

3.2.1所有k8s节点创建证书存放目录

mkdir&nbsp;-p&nbsp;/etc/kubernetes/pki

3.2.2master01节点生成k8s证书

cfssl&nbsp;gencert&nbsp;-initca&nbsp;ca-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/kubernetes/pki/ca

#&nbsp;生成一个根证书&nbsp;,多写了一些IP作为预留IP,为将来添加node做准备
#&nbsp;10.96.0.1是service网段的第一个地址,需要计算,192.168.8.66为高可用vip地址
#&nbsp;若没有IPv6&nbsp;可删除可保留&nbsp;

cfssl&nbsp;gencert&nbsp;&nbsp;&nbsp;\
-ca=/etc/kubernetes/pki/ca.pem&nbsp;&nbsp;&nbsp;\
-ca-key=/etc/kubernetes/pki/ca-key.pem&nbsp;&nbsp;&nbsp;\
-config=ca-config.json&nbsp;&nbsp;&nbsp;\
-hostname=10.96.0.1,192.168.8.66,127.0.0.1,kubernetes,kubernetes.default,kubernetes.default.svc,kubernetes.default.svc.cluster,kubernetes.default.svc.cluster.local,x.oiox.cn,k.oiox.cn,l.oiox.cn,o.oiox.cn,192.168.8.61,192.168.8.62,192.168.8.63,192.168.8.64,192.168.8.65,192.168.8.66,192.168.8.67,192.168.8.68,192.168.8.69,192.168.8.70,fc00:43f4:1eea:1::10,fc00:43f4:1eea:1::20,fc00:43f4:1eea:1::30,fc00:43f4:1eea:1::40,fc00:43f4:1eea:1::50,fc00:43f4:1eea:1::60,fc00:43f4:1eea:1::70,fc00:43f4:1eea:1::80,fc00:43f4:1eea:1::90,fc00:43f4:1eea:1::100&nbsp;&nbsp;&nbsp;\
-profile=kubernetes&nbsp;&nbsp;&nbsp;apiserver-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/kubernetes/pki/apiserver

3.2.3生成apiserver聚合证书

cfssl&nbsp;gencert&nbsp;&nbsp;&nbsp;-initca&nbsp;front-proxy-ca-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/kubernetes/pki/front-proxy-ca&nbsp;

#&nbsp;有一个警告,可以忽略

cfssl&nbsp;gencert&nbsp;&nbsp;\
-ca=/etc/kubernetes/pki/front-proxy-ca.pem&nbsp;&nbsp;&nbsp;\
-ca-key=/etc/kubernetes/pki/front-proxy-ca-key.pem&nbsp;&nbsp;&nbsp;\
-config=ca-config.json&nbsp;&nbsp;&nbsp;\
-profile=kubernetes&nbsp;&nbsp;&nbsp;front-proxy-client-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/kubernetes/pki/front-proxy-client

3.2.4生成controller-manage的证书

在《5.高可用配置》选择使用那种高可用方案
若使用 haproxy、keepalived 那么为 --server=https://192.168.8.66:8443
若使用 nginx方案,那么为 --server=https://127.0.0.1:8443

cfssl&nbsp;gencert&nbsp;\
&nbsp;&nbsp;&nbsp;-ca=/etc/kubernetes/pki/ca.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-ca-key=/etc/kubernetes/pki/ca-key.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-config=ca-config.json&nbsp;\
&nbsp;&nbsp;&nbsp;-profile=kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;manager-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/kubernetes/pki/controller-manager

#&nbsp;设置一个集群项

#&nbsp;在《5.高可用配置》选择使用那种高可用方案
#&nbsp;若使用&nbsp;haproxy、keepalived&nbsp;那么为&nbsp;`--server=https://192.168.8.66:8443`
#&nbsp;若使用&nbsp;nginx方案,那么为&nbsp;`--server=https://127.0.0.1:8443`

kubectl&nbsp;config&nbsp;set-cluster&nbsp;kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--certificate-authority=/etc/kubernetes/pki/ca.pem&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--embed-certs=true&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--server=https://127.0.0.1:8443&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig

#&nbsp;设置一个环境项,一个上下文

kubectl&nbsp;config&nbsp;set-context&nbsp;system:kube-controller-manager@kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;--cluster=kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;--user=system:kube-controller-manager&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig

#&nbsp;设置一个用户项

kubectl&nbsp;config&nbsp;set-credentials&nbsp;system:kube-controller-manager&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--client-certificate=/etc/kubernetes/pki/controller-manager.pem&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--client-key=/etc/kubernetes/pki/controller-manager-key.pem&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--embed-certs=true&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig

#&nbsp;设置默认环境

kubectl&nbsp;config&nbsp;use-context&nbsp;system:kube-controller-manager@kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig

cfssl&nbsp;gencert&nbsp;\
&nbsp;&nbsp;&nbsp;-ca=/etc/kubernetes/pki/ca.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-ca-key=/etc/kubernetes/pki/ca-key.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-config=ca-config.json&nbsp;\
&nbsp;&nbsp;&nbsp;-profile=kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;scheduler-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/kubernetes/pki/scheduler

#&nbsp;在《5.高可用配置》选择使用那种高可用方案
#&nbsp;若使用&nbsp;haproxy、keepalived&nbsp;那么为&nbsp;`--server=https://192.168.8.66:8443`
#&nbsp;若使用&nbsp;nginx方案,那么为&nbsp;`--server=https://127.0.0.1:8443`

kubectl&nbsp;config&nbsp;set-cluster&nbsp;kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--certificate-authority=/etc/kubernetes/pki/ca.pem&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--embed-certs=true&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--server=https://127.0.0.1:8443&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/scheduler.kubeconfig

kubectl&nbsp;config&nbsp;set-credentials&nbsp;system:kube-scheduler&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--client-certificate=/etc/kubernetes/pki/scheduler.pem&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--client-key=/etc/kubernetes/pki/scheduler-key.pem&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--embed-certs=true&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/scheduler.kubeconfig

kubectl&nbsp;config&nbsp;set-context&nbsp;system:kube-scheduler@kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--cluster=kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--user=system:kube-scheduler&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/scheduler.kubeconfig

kubectl&nbsp;config&nbsp;use-context&nbsp;system:kube-scheduler@kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/scheduler.kubeconfig

cfssl&nbsp;gencert&nbsp;\
&nbsp;&nbsp;&nbsp;-ca=/etc/kubernetes/pki/ca.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-ca-key=/etc/kubernetes/pki/ca-key.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-config=ca-config.json&nbsp;\
&nbsp;&nbsp;&nbsp;-profile=kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;admin-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/kubernetes/pki/admin

#&nbsp;在《5.高可用配置》选择使用那种高可用方案
#&nbsp;若使用&nbsp;haproxy、keepalived&nbsp;那么为&nbsp;`--server=https://192.168.8.66:8443`
#&nbsp;若使用&nbsp;nginx方案,那么为&nbsp;`--server=https://127.0.0.1:8443`

kubectl&nbsp;config&nbsp;set-cluster&nbsp;kubernetes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--certificate-authority=/etc/kubernetes/pki/ca.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--embed-certs=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--server=https://127.0.0.1:8443&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/admin.kubeconfig

kubectl&nbsp;config&nbsp;set-credentials&nbsp;kubernetes-admin&nbsp;&nbsp;\
&nbsp;&nbsp;--client-certificate=/etc/kubernetes/pki/admin.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--client-key=/etc/kubernetes/pki/admin-key.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--embed-certs=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/admin.kubeconfig

kubectl&nbsp;config&nbsp;set-context&nbsp;kubernetes-admin@kubernetes&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--cluster=kubernetes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--user=kubernetes-admin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/admin.kubeconfig

kubectl&nbsp;config&nbsp;use-context&nbsp;kubernetes-admin@kubernetes&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/admin.kubeconfig

3.2.5创建kube-proxy证书

在《5.高可用配置》选择使用那种高可用方案
若使用 haproxy、keepalived 那么为 --server=https://192.168.8.66:8443
若使用 nginx方案,那么为 --server=https://127.0.0.1:8443

cfssl&nbsp;gencert&nbsp;\
&nbsp;&nbsp;&nbsp;-ca=/etc/kubernetes/pki/ca.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-ca-key=/etc/kubernetes/pki/ca-key.pem&nbsp;\
&nbsp;&nbsp;&nbsp;-config=ca-config.json&nbsp;\
&nbsp;&nbsp;&nbsp;-profile=kubernetes&nbsp;\
&nbsp;&nbsp;&nbsp;kube-proxy-csr.json&nbsp;|&nbsp;cfssljson&nbsp;-bare&nbsp;/etc/kubernetes/pki/kube-proxy

#&nbsp;在《5.高可用配置》选择使用那种高可用方案
#&nbsp;若使用&nbsp;haproxy、keepalived&nbsp;那么为&nbsp;`--server=https://192.168.8.66:8443`
#&nbsp;若使用&nbsp;nginx方案,那么为&nbsp;`--server=https://127.0.0.1:8443`

kubectl&nbsp;config&nbsp;set-cluster&nbsp;kubernetes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--certificate-authority=/etc/kubernetes/pki/ca.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--embed-certs=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--server=https://127.0.0.1:8443&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig

kubectl&nbsp;config&nbsp;set-credentials&nbsp;kube-proxy&nbsp;&nbsp;\
&nbsp;&nbsp;--client-certificate=/etc/kubernetes/pki/kube-proxy.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--client-key=/etc/kubernetes/pki/kube-proxy-key.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--embed-certs=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig

kubectl&nbsp;config&nbsp;set-context&nbsp;kube-proxy@kubernetes&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--cluster=kubernetes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--user=kube-proxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig

kubectl&nbsp;config&nbsp;use-context&nbsp;kube-proxy@kubernetes&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig

3.2.5创建ServiceAccount Key ——secret

openssl&nbsp;genrsa&nbsp;-out&nbsp;/etc/kubernetes/pki/sa.key&nbsp;2048
openssl&nbsp;rsa&nbsp;-in&nbsp;/etc/kubernetes/pki/sa.key&nbsp;-pubout&nbsp;-out&nbsp;/etc/kubernetes/pki/sa.pub

3.2.6将证书发送到其他master节点

#其他节点创建目录
#&nbsp;mkdir&nbsp;&nbsp;/etc/kubernetes/pki/&nbsp;-p

for&nbsp;NODE&nbsp;in&nbsp;k8s-master02&nbsp;k8s-master03;&nbsp;do&nbsp;&nbsp;for&nbsp;FILE&nbsp;in&nbsp;$(ls&nbsp;/etc/kubernetes/pki&nbsp;|&nbsp;grep&nbsp;-v&nbsp;etcd);&nbsp;do&nbsp;&nbsp;scp&nbsp;/etc/kubernetes/pki/${FILE}&nbsp;$NODE:/etc/kubernetes/pki/${FILE};&nbsp;done;&nbsp;&nbsp;for&nbsp;FILE&nbsp;in&nbsp;admin.kubeconfig&nbsp;controller-manager.kubeconfig&nbsp;scheduler.kubeconfig;&nbsp;do&nbsp;&nbsp;scp&nbsp;/etc/kubernetes/${FILE}&nbsp;$NODE:/etc/kubernetes/${FILE};&nbsp;done;&nbsp;done

3.2.7查看证书

ls&nbsp;/etc/kubernetes/pki/
admin.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controller-manager.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kube-proxy.csr
admin-key.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controller-manager-key.pem&nbsp;&nbsp;kube-proxy-key.pem
admin.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controller-manager.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kube-proxy.pem
apiserver.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-ca.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sa.key
apiserver-key.pem&nbsp;&nbsp;front-proxy-ca-key.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sa.pub
apiserver.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-ca.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheduler.csr
ca.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-client.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheduler-key.pem
ca-key.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-client-key.pem&nbsp;&nbsp;scheduler.pem
ca.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-client.pem

#&nbsp;一共26个就对了
ls&nbsp;/etc/kubernetes/pki/&nbsp;|wc&nbsp;-l
26

4.k8s系统组件配置

4.1.1master01配置

#&nbsp;如果要用IPv6那么把IPv4地址修改为IPv6即可
cat&nbsp;>&nbsp;/etc/etcd/etcd.config.yml&nbsp;<<&nbsp;EOF&nbsp;
name:&nbsp;'k8s-master01'
data-dir:&nbsp;/var/lib/etcd
wal-dir:&nbsp;/var/lib/etcd/wal
snapshot-count:&nbsp;5000
heartbeat-interval:&nbsp;100
election-timeout:&nbsp;1000
quota-backend-bytes:&nbsp;0
listen-peer-urls:&nbsp;'https://192.168.8.61:2380'
listen-client-urls:&nbsp;'https://192.168.8.61:2379,http://127.0.0.1:2379'
max-snapshots:&nbsp;3
max-wals:&nbsp;5
cors:
initial-advertise-peer-urls:&nbsp;'https://192.168.8.61:2380'
advertise-client-urls:&nbsp;'https://192.168.8.61:2379'
discovery:
discovery-fallback:&nbsp;'proxy'
discovery-proxy:
discovery-srv:
initial-cluster:&nbsp;'k8s-master01=https://192.168.8.61:2380,k8s-master02=https://192.168.8.62:2380,k8s-master03=https://192.168.8.63:2380'
initial-cluster-token:&nbsp;'etcd-k8s-cluster'
initial-cluster-state:&nbsp;'new'
strict-reconfig-check:&nbsp;false
enable-v2:&nbsp;true
enable-pprof:&nbsp;true
proxy:&nbsp;'off'
proxy-failure-wait:&nbsp;5000
proxy-refresh-interval:&nbsp;30000
proxy-dial-timeout:&nbsp;1000
proxy-write-timeout:&nbsp;5000
proxy-read-timeout:&nbsp;0
client-transport-security:
&nbsp;&nbsp;cert-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd.pem'
&nbsp;&nbsp;key-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-key.pem'
&nbsp;&nbsp;client-cert-auth:&nbsp;true
&nbsp;&nbsp;trusted-ca-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-ca.pem'
&nbsp;&nbsp;auto-tls:&nbsp;true
peer-transport-security:
&nbsp;&nbsp;cert-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd.pem'
&nbsp;&nbsp;key-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-key.pem'
&nbsp;&nbsp;peer-client-cert-auth:&nbsp;true
&nbsp;&nbsp;trusted-ca-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-ca.pem'
&nbsp;&nbsp;auto-tls:&nbsp;true
debug:&nbsp;false
log-package-levels:
log-outputs:&nbsp;[default]
force-new-cluster:&nbsp;false
EOF

4.1.2master02配置

#&nbsp;如果要用IPv6那么把IPv4地址修改为IPv6即可
cat&nbsp;>&nbsp;/etc/etcd/etcd.config.yml&nbsp;<<&nbsp;EOF&nbsp;
name:&nbsp;'k8s-master02'
data-dir:&nbsp;/var/lib/etcd
wal-dir:&nbsp;/var/lib/etcd/wal
snapshot-count:&nbsp;5000
heartbeat-interval:&nbsp;100
election-timeout:&nbsp;1000
quota-backend-bytes:&nbsp;0
listen-peer-urls:&nbsp;'https://192.168.8.62:2380'
listen-client-urls:&nbsp;'https://192.168.8.62:2379,http://127.0.0.1:2379'
max-snapshots:&nbsp;3
max-wals:&nbsp;5
cors:
initial-advertise-peer-urls:&nbsp;'https://192.168.8.62:2380'
advertise-client-urls:&nbsp;'https://192.168.8.62:2379'
discovery:
discovery-fallback:&nbsp;'proxy'
discovery-proxy:
discovery-srv:
initial-cluster:&nbsp;'k8s-master01=https://192.168.8.61:2380,k8s-master02=https://192.168.8.62:2380,k8s-master03=https://192.168.8.63:2380'
initial-cluster-token:&nbsp;'etcd-k8s-cluster'
initial-cluster-state:&nbsp;'new'
strict-reconfig-check:&nbsp;false
enable-v2:&nbsp;true
enable-pprof:&nbsp;true
proxy:&nbsp;'off'
proxy-failure-wait:&nbsp;5000
proxy-refresh-interval:&nbsp;30000
proxy-dial-timeout:&nbsp;1000
proxy-write-timeout:&nbsp;5000
proxy-read-timeout:&nbsp;0
client-transport-security:
&nbsp;&nbsp;cert-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd.pem'
&nbsp;&nbsp;key-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-key.pem'
&nbsp;&nbsp;client-cert-auth:&nbsp;true
&nbsp;&nbsp;trusted-ca-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-ca.pem'
&nbsp;&nbsp;auto-tls:&nbsp;true
peer-transport-security:
&nbsp;&nbsp;cert-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd.pem'
&nbsp;&nbsp;key-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-key.pem'
&nbsp;&nbsp;peer-client-cert-auth:&nbsp;true
&nbsp;&nbsp;trusted-ca-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-ca.pem'
&nbsp;&nbsp;auto-tls:&nbsp;true
debug:&nbsp;false
log-package-levels:
log-outputs:&nbsp;[default]
force-new-cluster:&nbsp;false
EOF

4.1.3master03配置

#&nbsp;如果要用IPv6那么把IPv4地址修改为IPv6即可
cat&nbsp;>&nbsp;/etc/etcd/etcd.config.yml&nbsp;<<&nbsp;EOF&nbsp;
name:&nbsp;'k8s-master03'
data-dir:&nbsp;/var/lib/etcd
wal-dir:&nbsp;/var/lib/etcd/wal
snapshot-count:&nbsp;5000
heartbeat-interval:&nbsp;100
election-timeout:&nbsp;1000
quota-backend-bytes:&nbsp;0
listen-peer-urls:&nbsp;'https://192.168.8.63:2380'
listen-client-urls:&nbsp;'https://192.168.8.63:2379,http://127.0.0.1:2379'
max-snapshots:&nbsp;3
max-wals:&nbsp;5
cors:
initial-advertise-peer-urls:&nbsp;'https://192.168.8.63:2380'
advertise-client-urls:&nbsp;'https://192.168.8.63:2379'
discovery:
discovery-fallback:&nbsp;'proxy'
discovery-proxy:
discovery-srv:
initial-cluster:&nbsp;'k8s-master01=https://192.168.8.61:2380,k8s-master02=https://192.168.8.62:2380,k8s-master03=https://192.168.8.63:2380'
initial-cluster-token:&nbsp;'etcd-k8s-cluster'
initial-cluster-state:&nbsp;'new'
strict-reconfig-check:&nbsp;false
enable-v2:&nbsp;true
enable-pprof:&nbsp;true
proxy:&nbsp;'off'
proxy-failure-wait:&nbsp;5000
proxy-refresh-interval:&nbsp;30000
proxy-dial-timeout:&nbsp;1000
proxy-write-timeout:&nbsp;5000
proxy-read-timeout:&nbsp;0
client-transport-security:
&nbsp;&nbsp;cert-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd.pem'
&nbsp;&nbsp;key-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-key.pem'
&nbsp;&nbsp;client-cert-auth:&nbsp;true
&nbsp;&nbsp;trusted-ca-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-ca.pem'
&nbsp;&nbsp;auto-tls:&nbsp;true
peer-transport-security:
&nbsp;&nbsp;cert-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd.pem'
&nbsp;&nbsp;key-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-key.pem'
&nbsp;&nbsp;peer-client-cert-auth:&nbsp;true
&nbsp;&nbsp;trusted-ca-file:&nbsp;'/etc/kubernetes/pki/etcd/etcd-ca.pem'
&nbsp;&nbsp;auto-tls:&nbsp;true
debug:&nbsp;false
log-package-levels:
log-outputs:&nbsp;[default]
force-new-cluster:&nbsp;false
EOF

4.2.1创建etcd.service并启动

cat&nbsp;>&nbsp;/usr/lib/systemd/system/etcd.service&nbsp;<<&nbsp;EOF

[Unit]
Description=Etcd&nbsp;Service
Documentation=https://coreos.com/etcd/docs/latest/
After=network.target

[Service]
Type=notify
ExecStart=/usr/local/bin/etcd&nbsp;--config-file=/etc/etcd/etcd.config.yml
Restart=on-failure
RestartSec=10
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
Alias=etcd3.service

EOF

4.2.2创建etcd证书目录

mkdir&nbsp;/etc/kubernetes/pki/etcd
ln&nbsp;-s&nbsp;/etc/etcd/ssl/*&nbsp;/etc/kubernetes/pki/etcd/
systemctl&nbsp;daemon-reload
systemctl&nbsp;enable&nbsp;--now&nbsp;etcd

4.2.3查看etcd状态

#&nbsp;如果要用IPv6那么把IPv4地址修改为IPv6即可
export&nbsp;ETCDCTL_API=3
etcdctl&nbsp;--endpoints="192.168.8.63:2379,192.168.8.62:2379,192.168.8.61:2379"&nbsp;--cacert=/etc/kubernetes/pki/etcd/etcd-ca.pem&nbsp;--cert=/etc/kubernetes/pki/etcd/etcd.pem&nbsp;--key=/etc/kubernetes/pki/etcd/etcd-key.pem&nbsp;&nbsp;endpoint&nbsp;status&nbsp;--write-out=table
+----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
|&nbsp;&nbsp;&nbsp;&nbsp;ENDPOINT&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;VERSION&nbsp;|&nbsp;DB&nbsp;SIZE&nbsp;|&nbsp;IS&nbsp;LEADER&nbsp;|&nbsp;IS&nbsp;LEARNER&nbsp;|&nbsp;RAFT&nbsp;TERM&nbsp;|&nbsp;RAFT&nbsp;INDEX&nbsp;|&nbsp;RAFT&nbsp;APPLIED&nbsp;INDEX&nbsp;|&nbsp;ERRORS&nbsp;|
+----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
|&nbsp;192.168.8.63:2379&nbsp;|&nbsp;c0c8142615b9523f&nbsp;|&nbsp;&nbsp;&nbsp;3.5.6&nbsp;|&nbsp;&nbsp;&nbsp;20&nbsp;kB&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
|&nbsp;192.168.8.62:2379&nbsp;|&nbsp;de8396604d2c160d&nbsp;|&nbsp;&nbsp;&nbsp;3.5.6&nbsp;|&nbsp;&nbsp;&nbsp;20&nbsp;kB&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
|&nbsp;192.168.8.61:2379&nbsp;|&nbsp;33c9d6df0037ab97&nbsp;|&nbsp;&nbsp;&nbsp;3.5.6&nbsp;|&nbsp;&nbsp;&nbsp;20&nbsp;kB&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
+----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

[root@k8s-master01&nbsp;pki]#

5.高可用配置(在Master服务器上操作)

注意* 5.1.1 和5.1.2 二选一即可

选择使用那种高可用方案

在《3.2.生成k8s相关证书》

若使用 nginx方案,那么为 --server=https://127.0.0.1:8443
若使用 haproxy、keepalived 那么为 --server=https://192.168.8.66:8443

5.1.1自己手动编译

在所有节点执行

#&nbsp;安装编译环境
yum&nbsp;install&nbsp;gcc&nbsp;-y

#&nbsp;下载解压nginx二进制文件
wget&nbsp;http://nginx.org/download/nginx-1.22.1.tar.gz
tar&nbsp;xvf&nbsp;nginx-*.tar.gz
cd&nbsp;nginx-*

#&nbsp;进行编译
./configure&nbsp;--with-stream&nbsp;--without-http&nbsp;--without-http_uwsgi_module&nbsp;--without-http_scgi_module&nbsp;--without-http_fastcgi_module
make&nbsp;&&&nbsp;make&nbsp;install

5.1.2使用我编译好的

#&nbsp;使用我编译好的

cd&nbsp;kubernetes-v1.25.4/cby
#&nbsp;拷贝我编译好的nginx
node='k8s-master02&nbsp;k8s-master03&nbsp;k8s-node01&nbsp;k8s-node02'
for&nbsp;NODE&nbsp;in&nbsp;$node;&nbsp;do&nbsp;scp&nbsp;nginx.tar&nbsp;$NODE:/usr/local/;&nbsp;done

#&nbsp;其他节点上执行
cd&nbsp;/usr/local/
tar&nbsp;xvf&nbsp;nginx.tar

5.1.3写入启动配置

在所有主机上执行

#&nbsp;写入nginx配置文件
cat&nbsp;>&nbsp;/usr/local/nginx/conf/kube-nginx.conf&nbsp;<<EOF
worker_processes&nbsp;1;
events&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;worker_connections&nbsp;&nbsp;1024;
}
stream&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;upstream&nbsp;backend&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;least_conn;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash&nbsp;$remote_addr&nbsp;consistent;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;192.168.8.61:6443&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_fails=3&nbsp;fail_timeout=30s;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;192.168.8.62:6443&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_fails=3&nbsp;fail_timeout=30s;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;192.168.8.63:6443&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_fails=3&nbsp;fail_timeout=30s;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;127.0.0.1:8443;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_connect_timeout&nbsp;1s;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass&nbsp;backend;
&nbsp;&nbsp;&nbsp;&nbsp;}
}
EOF

#&nbsp;写入启动配置文件
cat&nbsp;>&nbsp;/etc/systemd/system/kube-nginx.service&nbsp;<<EOF
[Unit]
Description=kube-apiserver&nbsp;nginx&nbsp;proxy
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx&nbsp;-c&nbsp;/usr/local/nginx/conf/kube-nginx.conf&nbsp;-p&nbsp;/usr/local/nginx&nbsp;-t
ExecStart=/usr/local/nginx/sbin/nginx&nbsp;-c&nbsp;/usr/local/nginx/conf/kube-nginx.conf&nbsp;-p&nbsp;/usr/local/nginx
ExecReload=/usr/local/nginx/sbin/nginx&nbsp;-c&nbsp;/usr/local/nginx/conf/kube-nginx.conf&nbsp;-p&nbsp;/usr/local/nginx&nbsp;-s&nbsp;reload
PrivateTmp=true
Restart=always
RestartSec=5
StartLimitInterval=0
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

#&nbsp;设置开机自启
systemctl&nbsp;enable&nbsp;--now&nbsp;&nbsp;kube-nginx&nbsp;
systemctl&nbsp;restart&nbsp;kube-nginx
systemctl&nbsp;status&nbsp;kube-nginx

5.2.1安装keepalived和haproxy服务

systemctl&nbsp;disable&nbsp;--now&nbsp;firewalld

setenforce&nbsp;0
sed&nbsp;-i&nbsp;'s#SELINUX=enforcing#SELINUX=disabled#g'&nbsp;/etc/selinux/config

yum&nbsp;-y&nbsp;install&nbsp;keepalived&nbsp;haproxy

5.2.2修改haproxy配置文件(两台配置文件一样)

#&nbsp;cp&nbsp;/etc/haproxy/haproxy.cfg&nbsp;/etc/haproxy/haproxy.cfg.bak

cat&nbsp;>/etc/haproxy/haproxy.cfg<<"EOF"
global
&nbsp;maxconn&nbsp;2000
&nbsp;ulimit-n&nbsp;16384
&nbsp;log&nbsp;127.0.0.1&nbsp;local0&nbsp;err
&nbsp;stats&nbsp;timeout&nbsp;30s

defaults
&nbsp;log&nbsp;global
&nbsp;mode&nbsp;http
&nbsp;option&nbsp;httplog
&nbsp;timeout&nbsp;connect&nbsp;5000
&nbsp;timeout&nbsp;client&nbsp;50000
&nbsp;timeout&nbsp;server&nbsp;50000
&nbsp;timeout&nbsp;http-request&nbsp;15s
&nbsp;timeout&nbsp;http-keep-alive&nbsp;15s

frontend&nbsp;monitor-in
&nbsp;bind&nbsp;*:33305
&nbsp;mode&nbsp;http
&nbsp;option&nbsp;httplog
&nbsp;monitor-uri&nbsp;/monitor

frontend&nbsp;k8s-master
&nbsp;bind&nbsp;0.0.0.0:8443
&nbsp;bind&nbsp;127.0.0.1:8443
&nbsp;mode&nbsp;tcp
&nbsp;option&nbsp;tcplog
&nbsp;tcp-request&nbsp;inspect-delay&nbsp;5s
&nbsp;default_backend&nbsp;k8s-master

backend&nbsp;k8s-master
&nbsp;mode&nbsp;tcp
&nbsp;option&nbsp;tcplog
&nbsp;option&nbsp;tcp-check
&nbsp;balance&nbsp;roundrobin
&nbsp;default-server&nbsp;inter&nbsp;10s&nbsp;downinter&nbsp;5s&nbsp;rise&nbsp;2&nbsp;fall&nbsp;2&nbsp;slowstart&nbsp;60s&nbsp;maxconn&nbsp;250&nbsp;maxqueue&nbsp;256&nbsp;weight&nbsp;100
&nbsp;server&nbsp;&nbsp;k8s-master01&nbsp;&nbsp;192.168.8.61:6443&nbsp;check
&nbsp;server&nbsp;&nbsp;k8s-master02&nbsp;&nbsp;192.168.8.62:6443&nbsp;check
&nbsp;server&nbsp;&nbsp;k8s-master03&nbsp;&nbsp;192.168.8.63:6443&nbsp;check
EOF

5.2.3Master01配置keepalived master节点

#cp&nbsp;/etc/keepalived/keepalived.conf&nbsp;/etc/keepalived/keepalived.conf.bak

cat&nbsp;>&nbsp;/etc/keepalived/keepalived.conf&nbsp;<<&nbsp;EOF
!&nbsp;Configuration&nbsp;File&nbsp;for&nbsp;keepalived

global_defs&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;router_id&nbsp;LVS_DEVEL
}
vrrp_script&nbsp;chk_apiserver&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;script&nbsp;"/etc/keepalived/check_apiserver.sh"
&nbsp;&nbsp;&nbsp;&nbsp;interval&nbsp;5&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;weight&nbsp;-5
&nbsp;&nbsp;&nbsp;&nbsp;fall&nbsp;2
&nbsp;&nbsp;&nbsp;&nbsp;rise&nbsp;1
}
vrrp_instance&nbsp;VI_1&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;MASTER
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;注意网卡名
&nbsp;&nbsp;&nbsp;&nbsp;interface&nbsp;ens33&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;mcast_src_ip&nbsp;192.168.8.61
&nbsp;&nbsp;&nbsp;&nbsp;virtual_router_id&nbsp;51
&nbsp;&nbsp;&nbsp;&nbsp;priority&nbsp;100
&nbsp;&nbsp;&nbsp;&nbsp;nopreempt
&nbsp;&nbsp;&nbsp;&nbsp;advert_int&nbsp;2
&nbsp;&nbsp;&nbsp;&nbsp;authentication&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_type&nbsp;PASS
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_pass&nbsp;K8SHA_KA_AUTH
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;virtual_ipaddress&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.8.66
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;track_script&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chk_apiserver&nbsp;
}&nbsp;}

EOF

5.2.4Master02配置keepalived backup节点

#&nbsp;cp&nbsp;/etc/keepalived/keepalived.conf&nbsp;/etc/keepalived/keepalived.conf.bak

cat&nbsp;>&nbsp;/etc/keepalived/keepalived.conf&nbsp;<<&nbsp;EOF
!&nbsp;Configuration&nbsp;File&nbsp;for&nbsp;keepalived

global_defs&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;router_id&nbsp;LVS_DEVEL
}
vrrp_script&nbsp;chk_apiserver&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;script&nbsp;"/etc/keepalived/check_apiserver.sh"
&nbsp;&nbsp;&nbsp;&nbsp;interval&nbsp;5&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;weight&nbsp;-5
&nbsp;&nbsp;&nbsp;&nbsp;fall&nbsp;2
&nbsp;&nbsp;&nbsp;&nbsp;rise&nbsp;1

}
vrrp_instance&nbsp;VI_1&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;BACKUP
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;注意网卡名
&nbsp;&nbsp;&nbsp;&nbsp;interface&nbsp;ens33
&nbsp;&nbsp;&nbsp;&nbsp;mcast_src_ip&nbsp;192.168.8.62
&nbsp;&nbsp;&nbsp;&nbsp;virtual_router_id&nbsp;51
&nbsp;&nbsp;&nbsp;&nbsp;priority&nbsp;80
&nbsp;&nbsp;&nbsp;&nbsp;nopreempt
&nbsp;&nbsp;&nbsp;&nbsp;advert_int&nbsp;2
&nbsp;&nbsp;&nbsp;&nbsp;authentication&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_type&nbsp;PASS
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_pass&nbsp;K8SHA_KA_AUTH
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;virtual_ipaddress&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.8.66
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;track_script&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chk_apiserver&nbsp;
}&nbsp;}

EOF

5.2.5Master03配置keepalived backup节点

#&nbsp;cp&nbsp;/etc/keepalived/keepalived.conf&nbsp;/etc/keepalived/keepalived.conf.bak

cat&nbsp;>&nbsp;/etc/keepalived/keepalived.conf&nbsp;<<&nbsp;EOF
!&nbsp;Configuration&nbsp;File&nbsp;for&nbsp;keepalived

global_defs&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;router_id&nbsp;LVS_DEVEL
}
vrrp_script&nbsp;chk_apiserver&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;script&nbsp;"/etc/keepalived/check_apiserver.sh"
&nbsp;&nbsp;&nbsp;&nbsp;interval&nbsp;5&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;weight&nbsp;-5
&nbsp;&nbsp;&nbsp;&nbsp;fall&nbsp;2
&nbsp;&nbsp;&nbsp;&nbsp;rise&nbsp;1

}
vrrp_instance&nbsp;VI_1&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;BACKUP
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;注意网卡名
&nbsp;&nbsp;&nbsp;&nbsp;interface&nbsp;ens33
&nbsp;&nbsp;&nbsp;&nbsp;mcast_src_ip&nbsp;192.168.8.63
&nbsp;&nbsp;&nbsp;&nbsp;virtual_router_id&nbsp;51
&nbsp;&nbsp;&nbsp;&nbsp;priority&nbsp;50
&nbsp;&nbsp;&nbsp;&nbsp;nopreempt
&nbsp;&nbsp;&nbsp;&nbsp;advert_int&nbsp;2
&nbsp;&nbsp;&nbsp;&nbsp;authentication&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_type&nbsp;PASS
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_pass&nbsp;K8SHA_KA_AUTH
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;virtual_ipaddress&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.8.66
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;track_script&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chk_apiserver&nbsp;
}&nbsp;}

EOF

5.2.6健康检查脚本配置(两台lb主机)

cat&nbsp;>&nbsp;&nbsp;/etc/keepalived/check_apiserver.sh&nbsp;<<&nbsp;EOF
#!/bin/bash

err=0
for&nbsp;k&nbsp;in&nbsp;\$(seq&nbsp;1&nbsp;3)
do
&nbsp;&nbsp;&nbsp;&nbsp;check_code=\$(pgrep&nbsp;haproxy)
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;[[&nbsp;\$check_code&nbsp;==&nbsp;""&nbsp;]];&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err=\$(expr&nbsp;\$err&nbsp;+&nbsp;1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep&nbsp;1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break
&nbsp;&nbsp;&nbsp;&nbsp;fi
done

if&nbsp;[[&nbsp;\$err&nbsp;!=&nbsp;"0"&nbsp;]];&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"systemctl&nbsp;stop&nbsp;keepalived"
&nbsp;&nbsp;&nbsp;&nbsp;/usr/bin/systemctl&nbsp;stop&nbsp;keepalived
&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;1
else
&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;0
fi
EOF

#&nbsp;给脚本授权

chmod&nbsp;+x&nbsp;/etc/keepalived/check_apiserver.sh

5.2.7启动服务

systemctl&nbsp;daemon-reload
systemctl&nbsp;enable&nbsp;--now&nbsp;haproxy
systemctl&nbsp;enable&nbsp;--now&nbsp;keepalived

5.2.8测试高可用

#&nbsp;能ping同

[root@k8s-node02&nbsp;~]#&nbsp;ping&nbsp;192.168.8.66

#&nbsp;能telnet访问

[root@k8s-node02&nbsp;~]#&nbsp;telnet&nbsp;192.168.8.66&nbsp;8443

#&nbsp;关闭主节点,看vip是否漂移到备节点

6.k8s组件配置(区别于第4点)

所有k8s节点创建以下目录

mkdir&nbsp;-p&nbsp;/etc/kubernetes/manifests/&nbsp;/etc/systemd/system/kubelet.service.d&nbsp;/var/lib/kubelet&nbsp;/var/log/kubernetes

6.1.1master01节点配置

cat&nbsp;>&nbsp;/usr/lib/systemd/system/kube-apiserver.service&nbsp;<<&nbsp;EOF

[Unit]
Description=Kubernetes&nbsp;API&nbsp;Server
Documentation=https://github.com/kubernetes/kubernetes
After=network.target

[Service]
ExecStart=/usr/local/bin/kube-apiserver&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--v=2&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--logtostderr=true&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--allow-privileged=true&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--bind-address=0.0.0.0&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--secure-port=6443&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--advertise-address=192.168.8.61&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-cluster-ip-range=10.96.0.0/12,fd00:1111::/112&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-node-port-range=30000-32767&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-servers=https://192.168.8.61:2379,https://192.168.8.62:2379,https://192.168.8.63:2379&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-cafile=/etc/etcd/ssl/etcd-ca.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-certfile=/etc/etcd/ssl/etcd.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-keyfile=/etc/etcd/ssl/etcd-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--client-ca-file=/etc/kubernetes/pki/ca.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--tls-cert-file=/etc/kubernetes/pki/apiserver.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--tls-private-key-file=/etc/kubernetes/pki/apiserver-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubelet-client-certificate=/etc/kubernetes/pki/apiserver.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubelet-client-key=/etc/kubernetes/pki/apiserver-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-key-file=/etc/kubernetes/pki/sa.pub&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-signing-key-file=/etc/kubernetes/pki/sa.key&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-issuer=https://kubernetes.default.svc.cluster.local&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota&nbsp;&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--authorization-mode=Node,RBAC&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-bootstrap-token-auth=true&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-allowed-names=aggregator&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-group-headers=X-Remote-Group&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-extra-headers-prefix=X-Remote-Extra-&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-username-headers=X-Remote-User&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-aggregator-routing=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--feature-gates=IPv6DualStack=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--token-auth-file=/etc/kubernetes/token.csv

Restart=on-failure
RestartSec=10s
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

EOF

6.1.2master02节点配置

cat&nbsp;>&nbsp;/usr/lib/systemd/system/kube-apiserver.service&nbsp;<<&nbsp;EOF
[Unit]
Description=Kubernetes&nbsp;API&nbsp;Server
Documentation=https://github.com/kubernetes/kubernetes
After=network.target

[Service]
ExecStart=/usr/local/bin/kube-apiserver&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--v=2&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--logtostderr=true&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--allow-privileged=true&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--bind-address=0.0.0.0&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--secure-port=6443&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--advertise-address=192.168.8.62&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-cluster-ip-range=10.96.0.0/12,fd00:1111::/112&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-node-port-range=30000-32767&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-servers=https://192.168.8.61:2379,https://192.168.8.62:2379,https://192.168.8.63:2379&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-cafile=/etc/etcd/ssl/etcd-ca.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-certfile=/etc/etcd/ssl/etcd.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-keyfile=/etc/etcd/ssl/etcd-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--client-ca-file=/etc/kubernetes/pki/ca.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--tls-cert-file=/etc/kubernetes/pki/apiserver.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--tls-private-key-file=/etc/kubernetes/pki/apiserver-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubelet-client-certificate=/etc/kubernetes/pki/apiserver.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubelet-client-key=/etc/kubernetes/pki/apiserver-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-key-file=/etc/kubernetes/pki/sa.pub&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-signing-key-file=/etc/kubernetes/pki/sa.key&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-issuer=https://kubernetes.default.svc.cluster.local&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--authorization-mode=Node,RBAC&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-bootstrap-token-auth=true&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-allowed-names=aggregator&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-group-headers=X-Remote-Group&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-extra-headers-prefix=X-Remote-Extra-&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-username-headers=X-Remote-User&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-aggregator-routing=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--feature-gates=IPv6DualStack=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--token-auth-file=/etc/kubernetes/token.csv

Restart=on-failure
RestartSec=10s
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

EOF

6.1.3master03节点配置

cat&nbsp;>&nbsp;/usr/lib/systemd/system/kube-apiserver.service&nbsp;&nbsp;<<&nbsp;EOF

[Unit]
Description=Kubernetes&nbsp;API&nbsp;Server
Documentation=https://github.com/kubernetes/kubernetes
After=network.target

[Service]
ExecStart=/usr/local/bin/kube-apiserver&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--v=2&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--logtostderr=true&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--allow-privileged=true&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--bind-address=0.0.0.0&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--secure-port=6443&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--advertise-address=192.168.8.63&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-cluster-ip-range=10.96.0.0/12,fd00:1111::/112&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-node-port-range=30000-32767&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-servers=https://192.168.8.61:2379,https://192.168.8.62:2379,https://192.168.8.63:2379&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-cafile=/etc/etcd/ssl/etcd-ca.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-certfile=/etc/etcd/ssl/etcd.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--etcd-keyfile=/etc/etcd/ssl/etcd-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--client-ca-file=/etc/kubernetes/pki/ca.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--tls-cert-file=/etc/kubernetes/pki/apiserver.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--tls-private-key-file=/etc/kubernetes/pki/apiserver-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubelet-client-certificate=/etc/kubernetes/pki/apiserver.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubelet-client-key=/etc/kubernetes/pki/apiserver-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-key-file=/etc/kubernetes/pki/sa.pub&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-signing-key-file=/etc/kubernetes/pki/sa.key&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-issuer=https://kubernetes.default.svc.cluster.local&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--authorization-mode=Node,RBAC&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-bootstrap-token-auth=true&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client-key.pem&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-allowed-names=aggregator&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-group-headers=X-Remote-Group&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-extra-headers-prefix=X-Remote-Extra-&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-username-headers=X-Remote-User&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--enable-aggregator-routing=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--feature-gates=IPv6DualStack=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--token-auth-file=/etc/kubernetes/token.csv

Restart=on-failure
RestartSec=10s
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

EOF

6.1.4启动apiserver(所有master节点)

systemctl&nbsp;daemon-reload&nbsp;&&&nbsp;systemctl&nbsp;enable&nbsp;--now&nbsp;kube-apiserver

#&nbsp;注意查看状态是否启动正常
#&nbsp;systemctl&nbsp;status&nbsp;kube-apiserver

#&nbsp;所有master节点配置,且配置相同
#&nbsp;172.16.0.0/12为pod网段,按需求设置你自己的网段

cat&nbsp;>&nbsp;/usr/lib/systemd/system/kube-controller-manager.service&nbsp;<<&nbsp;EOF

[Unit]
Description=Kubernetes&nbsp;Controller&nbsp;Manager
Documentation=https://github.com/kubernetes/kubernetes
After=network.target

[Service]
ExecStart=/usr/local/bin/kube-controller-manager&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--v=2&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--logtostderr=true&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--bind-address=127.0.0.1&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--root-ca-file=/etc/kubernetes/pki/ca.pem&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--cluster-signing-cert-file=/etc/kubernetes/pki/ca.pem&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--cluster-signing-key-file=/etc/kubernetes/pki/ca-key.pem&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-account-private-key-file=/etc/kubernetes/pki/sa.key&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--leader-elect=true&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--use-service-account-credentials=true&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--node-monitor-grace-period=40s&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--node-monitor-period=5s&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--pod-eviction-timeout=2m0s&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--controllers=*,bootstrapsigner,tokencleaner&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--allocate-node-cidrs=true&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-cluster-ip-range=10.96.0.0/12,fd00:1111::/112&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--cluster-cidr=172.16.0.0/12,fc00:2222::/112&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--node-cidr-mask-size-ipv4=24&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--node-cidr-mask-size-ipv6=120&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--feature-gates=IPv6DualStack=true

Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

EOF

6.2.1启动kube-controller-manager,并查看状态

systemctl&nbsp;daemon-reload
systemctl&nbsp;enable&nbsp;--now&nbsp;kube-controller-manager
#&nbsp;systemctl&nbsp;&nbsp;status&nbsp;kube-controller-manager

6.3.1所有master节点配置,且配置相同

cat&nbsp;>&nbsp;/usr/lib/systemd/system/kube-scheduler.service&nbsp;<<&nbsp;EOF

[Unit]
Description=Kubernetes&nbsp;Scheduler
Documentation=https://github.com/kubernetes/kubernetes
After=network.target

[Service]
ExecStart=/usr/local/bin/kube-scheduler&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--v=2&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--logtostderr=true&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--bind-address=127.0.0.1&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--leader-elect=true&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/scheduler.kubeconfig

Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

EOF

6.3.2启动并查看服务状态

systemctl&nbsp;daemon-reload
systemctl&nbsp;enable&nbsp;--now&nbsp;kube-scheduler
#&nbsp;systemctl&nbsp;status&nbsp;kube-scheduler

7.TLS Bootstrapping配置

#&nbsp;在《5.高可用配置》选择使用那种高可用方案
#&nbsp;若使用&nbsp;haproxy、keepalived&nbsp;那么为&nbsp;`--server=https://192.168.8.66:8443`
#&nbsp;若使用&nbsp;nginx方案,那么为&nbsp;`--server=https://127.0.0.1:8443`

cd&nbsp;bootstrap

kubectl&nbsp;config&nbsp;set-cluster&nbsp;kubernetes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
--certificate-authority=/etc/kubernetes/pki/ca.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
--embed-certs=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--server=https://127.0.0.1:8443&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
--kubeconfig=/etc/kubernetes/bootstrap-kubelet.kubeconfig

kubectl&nbsp;config&nbsp;set-credentials&nbsp;tls-bootstrap-token-user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
--token=c8ad9c.2e4d610cf3e7426e&nbsp;\
--kubeconfig=/etc/kubernetes/bootstrap-kubelet.kubeconfig

kubectl&nbsp;config&nbsp;set-context&nbsp;tls-bootstrap-token-user@kubernetes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
--cluster=kubernetes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
--user=tls-bootstrap-token-user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
--kubeconfig=/etc/kubernetes/bootstrap-kubelet.kubeconfig

kubectl&nbsp;config&nbsp;use-context&nbsp;tls-bootstrap-token-user@kubernetes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
--kubeconfig=/etc/kubernetes/bootstrap-kubelet.kubeconfig

#&nbsp;token的位置在bootstrap.secret.yaml,如果修改的话到这个文件修改
mkdir&nbsp;-p&nbsp;/root/.kube&nbsp;;&nbsp;cp&nbsp;/etc/kubernetes/admin.kubeconfig&nbsp;/root/.kube/config

kubectl&nbsp;get&nbsp;cs
Warning:&nbsp;v1&nbsp;ComponentStatus&nbsp;is&nbsp;deprecated&nbsp;in&nbsp;v1.19+
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;MESSAGE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ERROR
scheduler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Healthy&nbsp;&nbsp;&nbsp;ok&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
controller-manager&nbsp;&nbsp;&nbsp;Healthy&nbsp;&nbsp;&nbsp;ok&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
etcd-0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Healthy&nbsp;&nbsp;&nbsp;{"health":"true","reason":""}&nbsp;&nbsp;&nbsp;
etcd-2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Healthy&nbsp;&nbsp;&nbsp;{"health":"true","reason":""}&nbsp;&nbsp;&nbsp;
etcd-1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Healthy&nbsp;&nbsp;&nbsp;{"health":"true","reason":""}&nbsp;

#&nbsp;切记执行,别忘记!!!
kubectl&nbsp;create&nbsp;-f&nbsp;bootstrap.secret.yaml

8.node节点配置

cd&nbsp;/etc/kubernetes/

for&nbsp;NODE&nbsp;in&nbsp;k8s-master02&nbsp;k8s-master03&nbsp;k8s-node01&nbsp;k8s-node02;&nbsp;do&nbsp;ssh&nbsp;$NODE&nbsp;mkdir&nbsp;-p&nbsp;/etc/kubernetes/pki;&nbsp;for&nbsp;FILE&nbsp;in&nbsp;pki/ca.pem&nbsp;pki/ca-key.pem&nbsp;pki/front-proxy-ca.pem&nbsp;bootstrap-kubelet.kubeconfig&nbsp;kube-proxy.kubeconfig;&nbsp;do&nbsp;scp&nbsp;/etc/kubernetes/$FILE&nbsp;$NODE:/etc/kubernetes/${FILE};&nbsp;done;&nbsp;done

注意 : 8.2.1 和 8.2.2 需要和 上方 2.1 和 2.2 对应起来

8.2.1当使用docker作为Runtime(不推荐)

cat&nbsp;>&nbsp;/usr/lib/systemd/system/kubelet.service&nbsp;<<&nbsp;EOF

[Unit]
Description=Kubernetes&nbsp;Kubelet
Documentation=https://github.com/kubernetes/kubernetes

[Service]
ExecStart=/usr/local/bin/kubelet&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.kubeconfig&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/kubelet.kubeconfig&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--config=/etc/kubernetes/kubelet-conf.yml&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--container-runtime-endpoint=unix:///run/cri-dockerd.sock&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--node-labels=node.kubernetes.io/node=

[Install]
WantedBy=multi-user.target
EOF

8.2.2当使用Containerd作为Runtime (推荐)

mkdir&nbsp;-p&nbsp;/var/lib/kubelet&nbsp;/var/log/kubernetes&nbsp;/etc/systemd/system/kubelet.service.d&nbsp;/etc/kubernetes/manifests/

#&nbsp;所有k8s节点配置kubelet&nbsp;service
cat&nbsp;>&nbsp;/usr/lib/systemd/system/kubelet.service&nbsp;<<&nbsp;EOF

[Unit]
Description=Kubernetes&nbsp;Kubelet
Documentation=https://github.com/kubernetes/kubernetes
After=containerd.service
Requires=containerd.service

[Service]
ExecStart=/usr/local/bin/kubelet&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.kubeconfig&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--kubeconfig=/etc/kubernetes/kubelet.kubeconfig&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--config=/etc/kubernetes/kubelet-conf.yml&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--container-runtime-endpoint=unix:///run/containerd/containerd.sock&nbsp;&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;--node-labels=node.kubernetes.io/node=
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--feature-gates=IPv6DualStack=true
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--container-runtime=remote
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--runtime-request-timeout=15m
&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;--cgroup-driver=systemd

[Install]
WantedBy=multi-user.target
EOF

8.2.3所有k8s节点创建kubelet的配置文件

cat&nbsp;>&nbsp;/etc/kubernetes/kubelet-conf.yml&nbsp;<<EOF
apiVersion:&nbsp;kubelet.config.k8s.io/v1beta1
kind:&nbsp;KubeletConfiguration
address:&nbsp;0.0.0.0
port:&nbsp;10250
readOnlyPort:&nbsp;10255
authentication:
&nbsp;&nbsp;anonymous:
&nbsp;&nbsp;&nbsp;&nbsp;enabled:&nbsp;false
&nbsp;&nbsp;webhook:
&nbsp;&nbsp;&nbsp;&nbsp;cacheTTL:&nbsp;2m0s
&nbsp;&nbsp;&nbsp;&nbsp;enabled:&nbsp;true
&nbsp;&nbsp;x509:
&nbsp;&nbsp;&nbsp;&nbsp;clientCAFile:&nbsp;/etc/kubernetes/pki/ca.pem
authorization:
&nbsp;&nbsp;mode:&nbsp;Webhook
&nbsp;&nbsp;webhook:
&nbsp;&nbsp;&nbsp;&nbsp;cacheAuthorizedTTL:&nbsp;5m0s
&nbsp;&nbsp;&nbsp;&nbsp;cacheUnauthorizedTTL:&nbsp;30s
cgroupDriver:&nbsp;systemd
cgroupsPerQOS:&nbsp;true
clusterDNS:
-&nbsp;10.96.0.10
clusterDomain:&nbsp;cluster.local
containerLogMaxFiles:&nbsp;5
containerLogMaxSize:&nbsp;10Mi
contentType:&nbsp;application/vnd.kubernetes.protobuf
cpuCFSQuota:&nbsp;true
cpuManagerPolicy:&nbsp;none
cpuManagerReconcilePeriod:&nbsp;10s
enableControllerAttachDetach:&nbsp;true
enableDebuggingHandlers:&nbsp;true
enforceNodeAllocatable:
-&nbsp;pods
eventBurst:&nbsp;10
eventRecordQPS:&nbsp;5
evictionHard:
&nbsp;&nbsp;imagefs.available:&nbsp;15%
&nbsp;&nbsp;memory.available:&nbsp;100Mi
&nbsp;&nbsp;nodefs.available:&nbsp;10%
&nbsp;&nbsp;nodefs.inodesFree:&nbsp;5%
evictionPressureTransitionPeriod:&nbsp;5m0s
failSwapOn:&nbsp;true
fileCheckFrequency:&nbsp;20s
hairpinMode:&nbsp;promiscuous-bridge
healthzBindAddress:&nbsp;127.0.0.1
healthzPort:&nbsp;10248
httpCheckFrequency:&nbsp;20s
imageGCHighThresholdPercent:&nbsp;85
imageGCLowThresholdPercent:&nbsp;80
imageMinimumGCAge:&nbsp;2m0s
iptablesDropBit:&nbsp;15
iptablesMasqueradeBit:&nbsp;14
kubeAPIBurst:&nbsp;10
kubeAPIQPS:&nbsp;5
makeIPTablesUtilChains:&nbsp;true
maxOpenFiles:&nbsp;1000000
maxPods:&nbsp;110
nodeStatusUpdateFrequency:&nbsp;10s
oomScoreAdj:&nbsp;-999
podPidsLimit:&nbsp;-1
registryBurst:&nbsp;10
registryPullQPS:&nbsp;5
resolvConf:&nbsp;/etc/resolv.conf
rotateCertificates:&nbsp;true
runtimeRequestTimeout:&nbsp;2m0s
serializeImagePulls:&nbsp;true
staticPodPath:&nbsp;/etc/kubernetes/manifests
streamingConnectionIdleTimeout:&nbsp;4h0m0s
syncFrequency:&nbsp;1m0s
volumeStatsAggPeriod:&nbsp;1m0s
EOF

8.2.4启动kubelet

systemctl&nbsp;daemon-reload
systemctl&nbsp;restart&nbsp;kubelet
systemctl&nbsp;enable&nbsp;--now&nbsp;kubelet

8.2.5查看集群

[root@k8s-master01&nbsp;~]#&nbsp;kubectl&nbsp;&nbsp;get&nbsp;node
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROLES&nbsp;&nbsp;&nbsp;&nbsp;AGE&nbsp;&nbsp;&nbsp;VERSION
k8s-master01&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;18s&nbsp;&nbsp;&nbsp;v1.25.4
k8s-master02&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;16s&nbsp;&nbsp;&nbsp;v1.25.4
k8s-master03&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;16s&nbsp;&nbsp;&nbsp;v1.25.4
k8s-node01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;14s&nbsp;&nbsp;&nbsp;v1.25.4
k8s-node02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;14s&nbsp;&nbsp;&nbsp;v1.25.4
[root@k8s-master01&nbsp;~]#

8.3.1将kubeconfig发送至其他节点

for&nbsp;NODE&nbsp;in&nbsp;k8s-master02&nbsp;k8s-master03;&nbsp;do&nbsp;scp&nbsp;/etc/kubernetes/kube-proxy.kubeconfig&nbsp;$NODE:/etc/kubernetes/kube-proxy.kubeconfig;&nbsp;done

for&nbsp;NODE&nbsp;in&nbsp;k8s-node01&nbsp;k8s-node02;&nbsp;do&nbsp;scp&nbsp;/etc/kubernetes/kube-proxy.kubeconfig&nbsp;$NODE:/etc/kubernetes/kube-proxy.kubeconfig;&nbsp;&nbsp;done

8.3.2所有k8s节点添加kube-proxy的service文件

cat&nbsp;>&nbsp;&nbsp;/usr/lib/systemd/system/kube-proxy.service&nbsp;<<&nbsp;EOF
[Unit]
Description=Kubernetes&nbsp;Kube&nbsp;Proxy
Documentation=https://github.com/kubernetes/kubernetes
After=network.target

[Service]
ExecStart=/usr/local/bin/kube-proxy&nbsp;\\
&nbsp;&nbsp;--config=/etc/kubernetes/kube-proxy.yaml&nbsp;\\
&nbsp;&nbsp;--v=2

Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

EOF

8.3.3所有k8s节点添加kube-proxy的配置

cat&nbsp;>&nbsp;/etc/kubernetes/kube-proxy.yaml&nbsp;<<&nbsp;EOF
apiVersion:&nbsp;kubeproxy.config.k8s.io/v1alpha1
bindAddress:&nbsp;0.0.0.0
clientConnection:
&nbsp;&nbsp;acceptContentTypes:&nbsp;""
&nbsp;&nbsp;burst:&nbsp;10
&nbsp;&nbsp;contentType:&nbsp;application/vnd.kubernetes.protobuf
&nbsp;&nbsp;kubeconfig:&nbsp;/etc/kubernetes/kube-proxy.kubeconfig
&nbsp;&nbsp;qps:&nbsp;5
clusterCIDR:&nbsp;172.16.0.0/12,fc00:2222::/112
configSyncPeriod:&nbsp;15m0s
conntrack:
&nbsp;&nbsp;max:&nbsp;null
&nbsp;&nbsp;maxPerCore:&nbsp;32768
&nbsp;&nbsp;min:&nbsp;131072
&nbsp;&nbsp;tcpCloseWaitTimeout:&nbsp;1h0m0s
&nbsp;&nbsp;tcpEstablishedTimeout:&nbsp;24h0m0s
enableProfiling:&nbsp;false
healthzBindAddress:&nbsp;0.0.0.0:10256
hostnameOverride:&nbsp;""
iptables:
&nbsp;&nbsp;masqueradeAll:&nbsp;false
&nbsp;&nbsp;masqueradeBit:&nbsp;14
&nbsp;&nbsp;minSyncPeriod:&nbsp;0s
&nbsp;&nbsp;syncPeriod:&nbsp;30s
ipvs:
&nbsp;&nbsp;masqueradeAll:&nbsp;true
&nbsp;&nbsp;minSyncPeriod:&nbsp;5s
&nbsp;&nbsp;scheduler:&nbsp;"rr"
&nbsp;&nbsp;syncPeriod:&nbsp;30s
kind:&nbsp;KubeProxyConfiguration
metricsBindAddress:&nbsp;127.0.0.1:10249
mode:&nbsp;"ipvs"
nodePortAddresses:&nbsp;null
oomScoreAdj:&nbsp;-999
portRange:&nbsp;""
udpIdleTimeout:&nbsp;250ms

EOF

8.3.4启动kube-proxy

systemctl&nbsp;daemon-reload
&nbsp;systemctl&nbsp;restart&nbsp;kube-proxy
&nbsp;systemctl&nbsp;enable&nbsp;--now&nbsp;kube-proxy

9.安装网络插件

注意 9.1 和 9.2 二选其一即可,建议在此处创建好快照后在进行操作,后续出问题可以回滚

** centos7 要升级libseccomp 不然 无法安装网络插件**

#&nbsp;https://github.com/opencontainers/runc/releases
#&nbsp;升级runc
wget&nbsp;https://ghproxy.com/https://github.com/opencontainers/runc/releases/download/v1.1.4/runc.amd64
install&nbsp;-m&nbsp;755&nbsp;runc.amd64&nbsp;/usr/local/sbin/runc
cp&nbsp;-p&nbsp;/usr/local/sbin/runc&nbsp;&nbsp;/usr/local/bin/runc
cp&nbsp;-p&nbsp;/usr/local/sbin/runc&nbsp;&nbsp;/usr/bin/runc

#下载高于2.4以上的包
yum&nbsp;-y&nbsp;install&nbsp;http://rpmfind.net/linux/centos/8-stream/BaseOS/x86_64/os/Packages/libseccomp-2.5.1-1.el8.x86_64.rpm

#查看当前版本
[root@k8s-master-1&nbsp;~]#&nbsp;rpm&nbsp;-qa&nbsp;|&nbsp;grep&nbsp;libseccomp
libseccomp-2.5.1-1.el8.x86_64

9.1.1更改calico网段

#&nbsp;本地没有公网&nbsp;IPv6&nbsp;使用&nbsp;calico.yaml
kubectl&nbsp;apply&nbsp;-f&nbsp;calico.yaml

#&nbsp;本地有公网&nbsp;IPv6&nbsp;使用&nbsp;calico-ipv6.yaml&nbsp;
#&nbsp;kubectl&nbsp;apply&nbsp;-f&nbsp;calico-ipv6.yaml

9.1.2查看容器状态

#&nbsp;calico&nbsp;初始化会很慢&nbsp;需要耐心等待一下,大约十分钟左右
[root@k8s-master01&nbsp;~]#&nbsp;kubectl&nbsp;&nbsp;get&nbsp;pod&nbsp;-A
NAMESPACE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READY&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;RESTARTS&nbsp;&nbsp;&nbsp;AGE
kube-system&nbsp;&nbsp;&nbsp;calico-kube-controllers-6747f75cdc-fbvvc&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;61s
kube-system&nbsp;&nbsp;&nbsp;calico-node-fs7hl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;61s
kube-system&nbsp;&nbsp;&nbsp;calico-node-jqz58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;61s
kube-system&nbsp;&nbsp;&nbsp;calico-node-khjlg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;61s
kube-system&nbsp;&nbsp;&nbsp;calico-node-wmf8q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;61s
kube-system&nbsp;&nbsp;&nbsp;calico-node-xc6gn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;61s
kube-system&nbsp;&nbsp;&nbsp;calico-typha-6cdc4b4fbc-57snb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;61s

9.2.1 安装helm

#&nbsp;[root@k8s-master01&nbsp;~]#&nbsp;curl&nbsp;-fsSL&nbsp;-o&nbsp;get_helm.sh&nbsp;https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
#&nbsp;[root@k8s-master01&nbsp;~]#&nbsp;chmod&nbsp;700&nbsp;get_helm.sh
#&nbsp;[root@k8s-master01&nbsp;~]#&nbsp;./get_helm.sh

wget&nbsp;https://get.helm.sh/helm-canary-linux-amd64.tar.gz
tar&nbsp;xvf&nbsp;helm-canary-linux-amd64.tar.tar
cp&nbsp;linux-amd64/helm&nbsp;/usr/local/bin/

9.2.2 安装cilium

#&nbsp;添加源
helm&nbsp;repo&nbsp;add&nbsp;cilium&nbsp;https://helm.cilium.io

#&nbsp;默认参数安装
helm&nbsp;install&nbsp;cilium&nbsp;cilium/cilium&nbsp;--namespace&nbsp;kube-system

#&nbsp;启用ipv6
#&nbsp;helm&nbsp;install&nbsp;cilium&nbsp;cilium/cilium&nbsp;--namespace&nbsp;kube-system&nbsp;--set&nbsp;ipv6.enabled=true

#&nbsp;启用路由信息和监控插件
#&nbsp;helm&nbsp;install&nbsp;cilium&nbsp;cilium/cilium&nbsp;--namespace&nbsp;kube-system&nbsp;--set&nbsp;hubble.relay.enabled=true&nbsp;--set&nbsp;hubble.ui.enabled=true&nbsp;--set&nbsp;prometheus.enabled=true&nbsp;--set&nbsp;operator.prometheus.enabled=true&nbsp;--set&nbsp;hubble.enabled=true&nbsp;--set&nbsp;hubble.metrics.enabled="{dns,drop,tcp,flow,port-distribution,icmp,http}"

9.2.3 查看

[root@k8s-master01&nbsp;~]#&nbsp;kubectl&nbsp;&nbsp;get&nbsp;pod&nbsp;-A&nbsp;|&nbsp;grep&nbsp;cil
kube-system&nbsp;&nbsp;&nbsp;cilium-gmr6c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m3s
kube-system&nbsp;&nbsp;&nbsp;cilium-kzgdj&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m3s
kube-system&nbsp;&nbsp;&nbsp;cilium-operator-69b677f97c-6pw4k&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m3s
kube-system&nbsp;&nbsp;&nbsp;cilium-operator-69b677f97c-xzzdk&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m3s
kube-system&nbsp;&nbsp;&nbsp;cilium-q2rnr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m3s
kube-system&nbsp;&nbsp;&nbsp;cilium-smx5v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m3s
kube-system&nbsp;&nbsp;&nbsp;cilium-tdjq4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m3s
[root@k8s-master01&nbsp;~]#

9.2.4 下载专属监控面板

[root@k8s-master01&nbsp;yaml]#&nbsp;wget&nbsp;https://raw.githubusercontent.com/cilium/cilium/1.12.1/examples/kubernetes/addons/prometheus/monitoring-example.yaml
[root@k8s-master01&nbsp;yaml]#
[root@k8s-master01&nbsp;yaml]#&nbsp;kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;monitoring-example.yaml
namespace/cilium-monitoring&nbsp;created
serviceaccount/prometheus-k8s&nbsp;created
configmap/grafana-config&nbsp;created
configmap/grafana-cilium-dashboard&nbsp;created
configmap/grafana-cilium-operator-dashboard&nbsp;created
configmap/grafana-hubble-dashboard&nbsp;created
configmap/prometheus&nbsp;created
clusterrole.rbac.authorization.k8s.io/prometheus&nbsp;created
clusterrolebinding.rbac.authorization.k8s.io/prometheus&nbsp;created
service/grafana&nbsp;created
service/prometheus&nbsp;created
deployment.apps/grafana&nbsp;created
deployment.apps/prometheus&nbsp;created
[root@k8s-master01&nbsp;yaml]#

9.2.5 下载部署测试用例

[root@k8s-master01&nbsp;yaml]#&nbsp;wget&nbsp;https://raw.githubusercontent.com/cilium/cilium/master/examples/kubernetes/connectivity-check/connectivity-check.yaml

[root@k8s-master01&nbsp;yaml]#&nbsp;sed&nbsp;-i&nbsp;"s#google.com#oiox.cn#g"&nbsp;connectivity-check.yaml

[root@k8s-master01&nbsp;yaml]#&nbsp;kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;connectivity-check.yaml
deployment.apps/echo-a&nbsp;created
deployment.apps/echo-b&nbsp;created
deployment.apps/echo-b-host&nbsp;created
deployment.apps/pod-to-a&nbsp;created
deployment.apps/pod-to-external-1111&nbsp;created
deployment.apps/pod-to-a-denied-cnp&nbsp;created
deployment.apps/pod-to-a-allowed-cnp&nbsp;created
deployment.apps/pod-to-external-fqdn-allow-google-cnp&nbsp;created
deployment.apps/pod-to-b-multi-node-clusterip&nbsp;created
deployment.apps/pod-to-b-multi-node-headless&nbsp;created
deployment.apps/host-to-b-multi-node-clusterip&nbsp;created
deployment.apps/host-to-b-multi-node-headless&nbsp;created
deployment.apps/pod-to-b-multi-node-nodeport&nbsp;created
deployment.apps/pod-to-b-intra-node-nodeport&nbsp;created
service/echo-a&nbsp;created
service/echo-b&nbsp;created
service/echo-b-headless&nbsp;created
service/echo-b-host-headless&nbsp;created
ciliumnetworkpolicy.cilium.io/pod-to-a-denied-cnp&nbsp;created
ciliumnetworkpolicy.cilium.io/pod-to-a-allowed-cnp&nbsp;created
ciliumnetworkpolicy.cilium.io/pod-to-external-fqdn-allow-google-cnp&nbsp;created
[root@k8s-master01&nbsp;yaml]#

9.2.6 查看pod

[root@k8s-master01&nbsp;yaml]#&nbsp;kubectl&nbsp;&nbsp;get&nbsp;pod&nbsp;-A
NAMESPACE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READY&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;RESTARTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AGE
cilium-monitoring&nbsp;&nbsp;&nbsp;grafana-59957b9549-6zzqh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
cilium-monitoring&nbsp;&nbsp;&nbsp;prometheus-7c8c9684bb-4v9cl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chenby-75b5d7fbfb-7zjsr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27h
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chenby-75b5d7fbfb-hbvr8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27h
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chenby-75b5d7fbfb-ppbzg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27h
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo-a-6799dff547-pnx6w&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo-b-fc47b659c-4bdg9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo-b-host-67fcfd59b7-28r9s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host-to-b-multi-node-clusterip-69c57975d6-z4j2z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host-to-b-multi-node-headless-865899f7bb-frrmc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pod-to-a-allowed-cnp-5f9d7d4b9d-hcd8x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pod-to-a-denied-cnp-65cc5ff97b-2rzb8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pod-to-a-dfc64f564-p7xcn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pod-to-b-intra-node-nodeport-677868746b-trk2l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pod-to-b-multi-node-clusterip-76bbbc677b-knfq2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pod-to-b-multi-node-headless-698c6579fd-mmvd7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pod-to-b-multi-node-nodeport-5dc4b8cfd6-8dxmz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pod-to-external-1111-8459965778-pjt9b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pod-to-external-fqdn-allow-google-cnp-64df9fb89b-l9l4q&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10m
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cilium-7rfj6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cilium-d4cch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cilium-h5x8r&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cilium-operator-5dbddb6dbf-flpl5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cilium-operator-5dbddb6dbf-gcznc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cilium-t2xlz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cilium-z65z7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coredns-665475b9f8-jkqn8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;1&nbsp;(36h&nbsp;ago)&nbsp;&nbsp;&nbsp;36h
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hubble-relay-59d8575-9pl9z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hubble-ui-64d4995d57-nsv9j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2/2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;metrics-server-776f58c94b-c6zgs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;1&nbsp;(36h&nbsp;ago)&nbsp;&nbsp;&nbsp;37h
[root@k8s-master01&nbsp;yaml]#

9.2.7 修改为NodePort

[root@k8s-master01&nbsp;yaml]#&nbsp;kubectl&nbsp;&nbsp;edit&nbsp;svc&nbsp;&nbsp;-n&nbsp;kube-system&nbsp;hubble-ui
service/hubble-ui&nbsp;edited
[root@k8s-master01&nbsp;yaml]#
[root@k8s-master01&nbsp;yaml]#&nbsp;kubectl&nbsp;&nbsp;edit&nbsp;svc&nbsp;&nbsp;-n&nbsp;cilium-monitoring&nbsp;grafana
service/grafana&nbsp;edited
[root@k8s-master01&nbsp;yaml]#
[root@k8s-master01&nbsp;yaml]#&nbsp;kubectl&nbsp;&nbsp;edit&nbsp;svc&nbsp;&nbsp;-n&nbsp;cilium-monitoring&nbsp;prometheus
service/prometheus&nbsp;edited
[root@k8s-master01&nbsp;yaml]#

type:&nbsp;NodePort

9.2.8 查看端口

[root@k8s-master01&nbsp;yaml]#&nbsp;kubectl&nbsp;get&nbsp;svc&nbsp;-A&nbsp;|&nbsp;grep&nbsp;monit
cilium-monitoring&nbsp;&nbsp;&nbsp;grafana&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodePort&nbsp;&nbsp;&nbsp;&nbsp;10.100.250.17&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3000:30707/TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15m
cilium-monitoring&nbsp;&nbsp;&nbsp;prometheus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodePort&nbsp;&nbsp;&nbsp;&nbsp;10.100.131.243&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9090:31155/TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15m
[root@k8s-master01&nbsp;yaml]#
[root@k8s-master01&nbsp;yaml]#&nbsp;kubectl&nbsp;get&nbsp;svc&nbsp;-A&nbsp;|&nbsp;grep&nbsp;hubble
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hubble-metrics&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClusterIP&nbsp;&nbsp;&nbsp;None&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9965/TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m12s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hubble-peer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClusterIP&nbsp;&nbsp;&nbsp;10.100.150.29&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;443/TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m12s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hubble-relay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClusterIP&nbsp;&nbsp;&nbsp;10.109.251.34&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80/TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m12s
kube-system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hubble-ui&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodePort&nbsp;&nbsp;&nbsp;&nbsp;10.102.253.59&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80:31219/TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5m12s
[root@k8s-master01&nbsp;yaml]#

9.2.9 访问

http://192.168.8.61:30707
http://192.168.8.61:31155
http://192.168.8.61:31219

10.安装CoreDNS

10.1.1修改文件

cd&nbsp;coredns/
cat&nbsp;coredns.yaml&nbsp;|&nbsp;grep&nbsp;clusterIP:
&nbsp;&nbsp;clusterIP:&nbsp;10.96.0.10

10.1.2安装

kubectl&nbsp;&nbsp;create&nbsp;-f&nbsp;coredns.yaml&nbsp;
serviceaccount/coredns&nbsp;created
clusterrole.rbac.authorization.k8s.io/system:coredns&nbsp;created
clusterrolebinding.rbac.authorization.k8s.io/system:coredns&nbsp;created
configmap/coredns&nbsp;created
deployment.apps/coredns&nbsp;created
service/kube-dns&nbsp;created

11.安装Metrics Server

11.1.1安装Metrics-server

在新版的Kubernetes中系统资源的采集均使用Metrics-server,可以通过Metrics采集节点和Pod的内存、磁盘、CPU和网络的使用率

#&nbsp;安装metrics&nbsp;server
cd&nbsp;metrics-server/

kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;metrics-server.yaml

11.1.2稍等片刻查看状态

kubectl&nbsp;&nbsp;top&nbsp;node
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU(cores)&nbsp;&nbsp;&nbsp;CPU%&nbsp;&nbsp;&nbsp;MEMORY(bytes)&nbsp;&nbsp;&nbsp;MEMORY%&nbsp;&nbsp;&nbsp;
k8s-master01&nbsp;&nbsp;&nbsp;154m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1715Mi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;21%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
k8s-master02&nbsp;&nbsp;&nbsp;151m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1274Mi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
k8s-master03&nbsp;&nbsp;&nbsp;523m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1345Mi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
k8s-node01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;84m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;671Mi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
k8s-node02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;73m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;727Mi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
k8s-node03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;96m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;769Mi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
k8s-node04&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;68m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;673Mi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
k8s-node05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;82m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1%&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;679Mi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8%

12.集群验证

cat<<EOF&nbsp;|&nbsp;kubectl&nbsp;apply&nbsp;-f&nbsp;-
apiVersion:&nbsp;v1
kind:&nbsp;Pod
metadata:
&nbsp;&nbsp;name:&nbsp;busybox
&nbsp;&nbsp;namespace:&nbsp;default
spec:
&nbsp;&nbsp;containers:
&nbsp;&nbsp;-&nbsp;name:&nbsp;busybox
&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;docker.io/library/busybox:1.28
&nbsp;&nbsp;&nbsp;&nbsp;command:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;sleep
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;"3600"
&nbsp;&nbsp;&nbsp;&nbsp;imagePullPolicy:&nbsp;IfNotPresent
&nbsp;&nbsp;restartPolicy:&nbsp;Always
EOF

#&nbsp;查看
kubectl&nbsp;&nbsp;get&nbsp;pod
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READY&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;RESTARTS&nbsp;&nbsp;&nbsp;AGE
busybox&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17s

kubectl&nbsp;get&nbsp;svc
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLUSTER-IP&nbsp;&nbsp;&nbsp;EXTERNAL-IP&nbsp;&nbsp;&nbsp;PORT(S)&nbsp;&nbsp;&nbsp;AGE
kubernetes&nbsp;&nbsp;&nbsp;ClusterIP&nbsp;&nbsp;&nbsp;10.96.0.1&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;443/TCP&nbsp;&nbsp;&nbsp;17h

kubectl&nbsp;exec&nbsp;&nbsp;busybox&nbsp;-n&nbsp;default&nbsp;--&nbsp;nslookup&nbsp;kubernetes
3Server:&nbsp;&nbsp;&nbsp;&nbsp;10.96.0.10
Address&nbsp;1:&nbsp;10.96.0.10&nbsp;kube-dns.kube-system.svc.cluster.local

Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kubernetes
Address&nbsp;1:&nbsp;10.96.0.1&nbsp;kubernetes.default.svc.cluster.local

kubectl&nbsp;exec&nbsp;&nbsp;busybox&nbsp;-n&nbsp;default&nbsp;--&nbsp;nslookup&nbsp;kube-dns.kube-system
Server:&nbsp;&nbsp;&nbsp;&nbsp;10.96.0.10
Address&nbsp;1:&nbsp;10.96.0.10&nbsp;kube-dns.kube-system.svc.cluster.local

Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kube-dns.kube-system
Address&nbsp;1:&nbsp;10.96.0.10&nbsp;kube-dns.kube-system.svc.cluster.local

telnet&nbsp;10.96.0.1&nbsp;443
Trying&nbsp;10.96.0.1...
Connected&nbsp;to&nbsp;10.96.0.1.
Escape&nbsp;character&nbsp;is&nbsp;'^]'.

&nbsp;telnet&nbsp;10.96.0.10&nbsp;53
Trying&nbsp;10.96.0.10...
Connected&nbsp;to&nbsp;10.96.0.10.
Escape&nbsp;character&nbsp;is&nbsp;'^]'.

curl&nbsp;10.96.0.10:53
curl:&nbsp;(52)&nbsp;Empty&nbsp;reply&nbsp;from&nbsp;server

kubectl&nbsp;get&nbsp;po&nbsp;-owide
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READY&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;RESTARTS&nbsp;&nbsp;&nbsp;AGE&nbsp;&nbsp;&nbsp;IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOMINATED&nbsp;NODE&nbsp;&nbsp;&nbsp;READINESS&nbsp;GATES
busybox&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17m&nbsp;&nbsp;&nbsp;172.27.14.193&nbsp;&nbsp;&nbsp;k8s-node02&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>

&nbsp;kubectl&nbsp;get&nbsp;po&nbsp;-n&nbsp;kube-system&nbsp;-owide
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READY&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;RESTARTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AGE&nbsp;&nbsp;&nbsp;IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOMINATED&nbsp;NODE&nbsp;&nbsp;&nbsp;READINESS&nbsp;GATES
calico-kube-controllers-5dffd5886b-4blh6&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;77m&nbsp;&nbsp;&nbsp;172.25.244.193&nbsp;&nbsp;&nbsp;k8s-master01&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
calico-node-fvbdq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;1&nbsp;(75m&nbsp;ago)&nbsp;&nbsp;&nbsp;77m&nbsp;&nbsp;&nbsp;192.168.8.61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-master01&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
calico-node-g8nqd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;77m&nbsp;&nbsp;&nbsp;192.168.8.64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-node01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
calico-node-mdps8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;77m&nbsp;&nbsp;&nbsp;192.168.8.65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-node02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
calico-node-nf4nt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;77m&nbsp;&nbsp;&nbsp;192.168.8.63&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-master03&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
calico-node-sq2ml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;77m&nbsp;&nbsp;&nbsp;192.168.8.62&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-master02&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
calico-typha-8445487f56-mg6p8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;77m&nbsp;&nbsp;&nbsp;192.168.8.65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-node02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
calico-typha-8445487f56-pxbpj&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;77m&nbsp;&nbsp;&nbsp;192.168.8.61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-master01&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
calico-typha-8445487f56-tnssl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;77m&nbsp;&nbsp;&nbsp;192.168.8.64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-node01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
coredns-5db5696c7-67h79&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;63m&nbsp;&nbsp;&nbsp;172.25.92.65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-master02&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>
metrics-server-6bf7dcd649-5fhrw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;61m&nbsp;&nbsp;&nbsp;172.18.195.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k8s-master03&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>

#&nbsp;进入busybox&nbsp;ping其他节点上的pod

kubectl&nbsp;exec&nbsp;-ti&nbsp;busybox&nbsp;--&nbsp;sh
/&nbsp;#&nbsp;ping&nbsp;192.168.8.64
PING&nbsp;192.168.8.64&nbsp;(192.168.8.64):&nbsp;56&nbsp;data&nbsp;bytes
64&nbsp;bytes&nbsp;from&nbsp;192.168.8.64:&nbsp;seq=0&nbsp;ttl=63&nbsp;time=0.358&nbsp;ms
64&nbsp;bytes&nbsp;from&nbsp;192.168.8.64:&nbsp;seq=1&nbsp;ttl=63&nbsp;time=0.668&nbsp;ms
64&nbsp;bytes&nbsp;from&nbsp;192.168.8.64:&nbsp;seq=2&nbsp;ttl=63&nbsp;time=0.637&nbsp;ms
64&nbsp;bytes&nbsp;from&nbsp;192.168.8.64:&nbsp;seq=3&nbsp;ttl=63&nbsp;time=0.624&nbsp;ms
64&nbsp;bytes&nbsp;from&nbsp;192.168.8.64:&nbsp;seq=4&nbsp;ttl=63&nbsp;time=0.907&nbsp;ms

#&nbsp;可以连通证明这个pod是可以跨命名空间和跨主机通信的

cat&nbsp;>&nbsp;deployments.yaml&nbsp;<<&nbsp;EOF
apiVersion:&nbsp;apps/v1
kind:&nbsp;Deployment
metadata:
&nbsp;&nbsp;name:&nbsp;nginx-deployment
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;app:&nbsp;nginx
spec:
&nbsp;&nbsp;replicas:&nbsp;3
&nbsp;&nbsp;selector:
&nbsp;&nbsp;&nbsp;&nbsp;matchLabels:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app:&nbsp;nginx
&nbsp;&nbsp;template:
&nbsp;&nbsp;&nbsp;&nbsp;metadata:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app:&nbsp;nginx
&nbsp;&nbsp;&nbsp;&nbsp;spec:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;containers:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;nginx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;docker.io/library/nginx:1.14.2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ports:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;containerPort:&nbsp;80

EOF

kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;deployments.yaml&nbsp;
deployment.apps/nginx-deployment&nbsp;created

kubectl&nbsp;&nbsp;get&nbsp;pod&nbsp;
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;READY&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;RESTARTS&nbsp;&nbsp;&nbsp;AGE
busybox&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6m25s
nginx-deployment-9456bbbf9-4bmvk&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8s
nginx-deployment-9456bbbf9-9rcdk&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8s
nginx-deployment-9456bbbf9-dqv8s&nbsp;&nbsp;&nbsp;1/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Running&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8s

#&nbsp;删除nginx

[root@k8s-master01&nbsp;~]#&nbsp;kubectl&nbsp;delete&nbsp;-f&nbsp;deployments.yaml

13.安装dashboard

wget&nbsp;https://raw.githubusercontent.com/cby-chen/Kubernetes/main/yaml/dashboard.yaml
wget&nbsp;https://raw.githubusercontent.com/cby-chen/Kubernetes/main/yaml/dashboard-user.yaml

sed&nbsp;-i&nbsp;"s#kubernetesui/dashboard#registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard#g"&nbsp;dashboard.yaml
sed&nbsp;-i&nbsp;"s#kubernetesui/metrics-scraper#registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper#g"&nbsp;dashboard.yaml

cat&nbsp;dashboard.yaml&nbsp;|&nbsp;grep&nbsp;image
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.6.1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imagePullPolicy:&nbsp;Always
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.8

kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;dashboard.yaml
kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;dashboard-user.yaml

kubectl&nbsp;edit&nbsp;svc&nbsp;kubernetes-dashboard&nbsp;-n&nbsp;kubernetes-dashboard
&nbsp;&nbsp;type:&nbsp;NodePort

kubectl&nbsp;get&nbsp;svc&nbsp;kubernetes-dashboard&nbsp;-n&nbsp;kubernetes-dashboard
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLUSTER-IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTERNAL-IP&nbsp;&nbsp;&nbsp;PORT(S)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AGE
kubernetes-dashboard&nbsp;&nbsp;&nbsp;NodePort&nbsp;&nbsp;&nbsp;10.108.120.110&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;443:30034/TCP&nbsp;&nbsp;&nbsp;34s

kubectl&nbsp;-n&nbsp;kubernetes-dashboard&nbsp;create&nbsp;token&nbsp;admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6IllnWjFheFpNeDgxZ2pxdTlTYzBEWFJvdVoyWFZBTFZWME44dTgwam1DY2MifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjcwMzE0Mzk5LCJpYXQiOjE2NzAzMTA3OTksImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiZjcyMTQ5NzctZDBlNi00NjExLWFlYzctNDgzMWE5MzVjN2M4In19LCJuYmYiOjE2NzAzMTA3OTksInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.JU28wtYdQ2TkAUHJx0tz5pBH5Z3bHPoSNWC_z8bKjmU5IztvckUPiv7_VaNwJC3da39rSOfvIoMN7cvq0MNi4qLKm5k8S2szODh9m2FPWeN81aQpneVB8CcwL0PZVL3hvUy7VqnM_Q3L7PhDfsrS3EK3bo1blHJRmSLuQcAIEICU8WNX7R2zxvOlNyXorxkwk68jDUvuAO1-AXfTOTpXWS1NDmm_zceKAIscTeT_nH1qlEXsPLfofKqDnA8XmtQIGr89VfIBBDhh1eox_hC7qNkLvPKY2oIuSBXG5mttcziqZBijtbU7rwirtgiIVVWSTdLOZmeXaDWpyZAnNzBAVg

https://192.168.8.61:30034/

14.ingress安装

cd&nbsp;ingress/

kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;deploy.yaml&nbsp;
kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;backend.yaml&nbsp;

#&nbsp;等创建完成后在执行:
kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;ingress-demo-app.yaml&nbsp;

kubectl&nbsp;&nbsp;get&nbsp;ingress
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLASS&nbsp;&nbsp;&nbsp;HOSTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDRESS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTS&nbsp;&nbsp;&nbsp;AGE
ingress-host-bar&nbsp;&nbsp;&nbsp;nginx&nbsp;&nbsp;&nbsp;hello.chenby.cn,demo.chenby.cn&nbsp;&nbsp;&nbsp;192.168.8.62&nbsp;&nbsp;&nbsp;80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7s

[root@hello&nbsp;~/yaml]#&nbsp;kubectl&nbsp;&nbsp;get&nbsp;svc&nbsp;-A&nbsp;|&nbsp;grep&nbsp;ingress
ingress-nginx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ingress-nginx-controller&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodePort&nbsp;&nbsp;&nbsp;&nbsp;10.104.231.36&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80:32636/TCP,443:30579/TCP&nbsp;&nbsp;&nbsp;104s
ingress-nginx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ingress-nginx-controller-admission&nbsp;&nbsp;&nbsp;ClusterIP&nbsp;&nbsp;&nbsp;10.101.85.88&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;443/TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;105s
[root@hello&nbsp;~/yaml]#

15.IPv6测试

#部署应用

cat<<EOF&nbsp;|&nbsp;kubectl&nbsp;apply&nbsp;-f&nbsp;-
apiVersion:&nbsp;apps/v1
kind:&nbsp;Deployment
metadata:
&nbsp;&nbsp;name:&nbsp;chenby
spec:
&nbsp;&nbsp;replicas:&nbsp;3
&nbsp;&nbsp;selector:
&nbsp;&nbsp;&nbsp;&nbsp;matchLabels:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app:&nbsp;chenby
&nbsp;&nbsp;template:
&nbsp;&nbsp;&nbsp;&nbsp;metadata:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app:&nbsp;chenby
&nbsp;&nbsp;&nbsp;&nbsp;spec:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;containers:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;chenby
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;docker.io/library/nginx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resources:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory:&nbsp;"128Mi"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpu:&nbsp;"500m"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ports:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;containerPort:&nbsp;80

---
apiVersion:&nbsp;v1
kind:&nbsp;Service
metadata:
&nbsp;&nbsp;name:&nbsp;chenby
spec:
&nbsp;&nbsp;ipFamilyPolicy:&nbsp;PreferDualStack
&nbsp;&nbsp;ipFamilies:
&nbsp;&nbsp;-&nbsp;IPv6
&nbsp;&nbsp;-&nbsp;IPv4
&nbsp;&nbsp;type:&nbsp;NodePort
&nbsp;&nbsp;selector:
&nbsp;&nbsp;&nbsp;&nbsp;app:&nbsp;chenby
&nbsp;&nbsp;ports:
&nbsp;&nbsp;-&nbsp;port:&nbsp;80
&nbsp;&nbsp;&nbsp;&nbsp;targetPort:&nbsp;80
EOF

#查看端口
[root@k8s-master01&nbsp;~]#&nbsp;kubectl&nbsp;&nbsp;get&nbsp;svc
NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLUSTER-IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTERNAL-IP&nbsp;&nbsp;&nbsp;PORT(S)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AGE
chenby&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodePort&nbsp;&nbsp;&nbsp;&nbsp;fd00::a29c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80:30779/TCP&nbsp;&nbsp;&nbsp;5s
[root@k8s-master01&nbsp;~]#&nbsp;

#使用内网访问
[root@localhost&nbsp;yaml]#&nbsp;curl&nbsp;-I&nbsp;http://[fd00::a29c]
HTTP/1.1&nbsp;200&nbsp;OK
Server:&nbsp;nginx/1.21.6
Date:&nbsp;Thu,&nbsp;05&nbsp;May&nbsp;2022&nbsp;10:20:35&nbsp;GMT
Content-Type:&nbsp;text/html
Content-Length:&nbsp;615
Last-Modified:&nbsp;Tue,&nbsp;25&nbsp;Jan&nbsp;2022&nbsp;15:03:52&nbsp;GMT
Connection:&nbsp;keep-alive
ETag:&nbsp;"61f01158-267"
Accept-Ranges:&nbsp;bytes

[root@localhost&nbsp;yaml]#&nbsp;curl&nbsp;-I&nbsp;http://192.168.8.61:30779
HTTP/1.1&nbsp;200&nbsp;OK
Server:&nbsp;nginx/1.21.6
Date:&nbsp;Thu,&nbsp;05&nbsp;May&nbsp;2022&nbsp;10:20:59&nbsp;GMT
Content-Type:&nbsp;text/html
Content-Length:&nbsp;615
Last-Modified:&nbsp;Tue,&nbsp;25&nbsp;Jan&nbsp;2022&nbsp;15:03:52&nbsp;GMT
Connection:&nbsp;keep-alive
ETag:&nbsp;"61f01158-267"
Accept-Ranges:&nbsp;bytes

[root@localhost&nbsp;yaml]#&nbsp;

#使用公网访问
[root@localhost&nbsp;yaml]#&nbsp;curl&nbsp;-I&nbsp;http://[2409:8a10:9e18:9020::10]:30779
HTTP/1.1&nbsp;200&nbsp;OK
Server:&nbsp;nginx/1.21.6
Date:&nbsp;Thu,&nbsp;05&nbsp;May&nbsp;2022&nbsp;10:20:54&nbsp;GMT
Content-Type:&nbsp;text/html
Content-Length:&nbsp;615
Last-Modified:&nbsp;Tue,&nbsp;25&nbsp;Jan&nbsp;2022&nbsp;15:03:52&nbsp;GMT
Connection:&nbsp;keep-alive
ETag:&nbsp;"61f01158-267"
Accept-Ranges:&nbsp;bytes

16.安装命令行自动补全功能

yum&nbsp;install&nbsp;bash-completion&nbsp;-y
source&nbsp;/usr/share/bash-completion/bash_completion
source&nbsp;<(kubectl&nbsp;completion&nbsp;bash)
echo&nbsp;"source&nbsp;<(kubectl&nbsp;completion&nbsp;bash)"&nbsp;>>&nbsp;~/.bashrc

关于

https://www.oiox.cn/

https://www.oiox.cn/index.php/start-page.html

CSDN、GitHub、知乎、开源中国、思否、掘金、简书、华为云、阿里云、腾讯云、哔哩哔哩、今日头条、新浪微博、个人博客

全网可搜《小陈运维》

文章主要发布于微信公众号:《Linux运维交流社区》