二进制安装Kubernetes(k8s) v1.25.0 IPv4/IPv6双栈
阅读原文时间:2023年07月13日阅读:3

二进制安装Kubernetes(k8s) v1.25.0 IPv4/IPv6双栈

Kubernetes 开源不易,帮忙点个star,谢谢了

介绍

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

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

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

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

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

https://github.com/cby-chen/Kubernetes/releases

手动项目地址:https://github.com/cby-chen/Kubernetes

脚本项目地址:https://github.com/cby-chen/Binary_installation_of_Kubernetes

强烈建议在Github上查看文档。Github出问题会更新文档,并且后续尽可能第一时间更新新版本文档。

1.21.13 和 1.22.10 和 1.23.3 和 1.23.4 和 1.23.5 和 1.23.6 和 1.23.7 和 1.24.0 和 1.24.1 和 1.24.2 和 1.24.3 和 1.25.0 文档以及安装包已生成。

1.环境

主机名称

IP地址

说明

软件

Master01

192.168.1.61

master节点

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

Master02

192.168.1.62

master节点

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

Master03

192.168.1.63

master节点

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

Node01

192.168.1.64

node节点

kubelet、kube-proxy、nfs-client

Node02

192.168.1.65

node节点

kubelet、kube-proxy、nfs-client

Node03

192.168.1.66

node节点

kubelet、kube-proxy、nfs-client

Node04

192.168.1.67

node节点

kubelet、kube-proxy、nfs-client

Node05

192.168.1.68

node节点

kubelet、kube-proxy、nfs-client

Lb01

192.168.1.70

Lb01节点

haproxy、keepalived

Lb02

192.168.1.75

Lb02节点

haproxy、keepalived

192.168.1.69

VIP

软件

版本

kernel

5.18.0-1.el8

CentOS 8

v8 或者 v7

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

v1.25.0

etcd

v3.5.4

containerd

v1.6.8

cfssl

v1.6.1

cni

v1.1.1

crictl

v1.24.2

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.1.100 "nmcli con mod ens18 ipv4.addresses 192.168.1.61/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.106 "nmcli con mod ens18 ipv4.addresses 192.168.1.62/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.110 "nmcli con mod ens18 ipv4.addresses 192.168.1.63/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.114 "nmcli con mod ens18 ipv4.addresses 192.168.1.64/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.115 "nmcli con mod ens18 ipv4.addresses 192.168.1.65/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.116 "nmcli con mod ens18 ipv4.addresses 192.168.1.66/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.117 "nmcli con mod ens18 ipv4.addresses 192.168.1.67/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.118 "nmcli con mod ens18 ipv4.addresses 192.168.1.68/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.156 "nmcli con mod ens18 ipv4.addresses 192.168.1.70/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
ssh root@192.168.1.160 "nmcli con mod ens18 ipv4.addresses 192.168.1.75/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"

# 没有IPv6选择不配置即可
ssh root@192.168.1.61 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::10; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"
ssh root@192.168.1.62 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::20; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"
ssh root@192.168.1.63 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::30; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"
ssh root@192.168.1.64 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::40; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"
ssh root@192.168.1.65 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::50; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"
ssh root@192.168.1.66 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::60; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"
ssh root@192.168.1.67 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::70; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"
ssh root@192.168.1.68 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::80; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"
ssh root@192.168.1.70 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::90; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"
ssh root@192.168.1.75 "nmcli con mod ens18 ipv6.addresses 2408:8207:78cc:5cc1:181c::100; nmcli con mod ens18 ipv6.gateway fe80::2e2:69ff:fe3f:b198; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2001:4860:4860::8888"; nmcli con up ens18"

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
hostnamectl set-hostname k8s-node03
hostnamectl set-hostname k8s-node04
hostnamectl set-hostname k8s-node05
hostnamectl set-hostname lb01
hostnamectl set-hostname lb02

1.4.配置yum源

# 对于 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.安装一些必备工具

yum -y install wget jq psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl -y

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.0/kubernetes-server-linux-amd64.tar.gz

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

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

3.containerd二进制包下载
github下载地址:https://github.com/containerd/containerd/releases

4.containerd下载时下载带cni插件的二进制包。
wget https://github.com/containerd/containerd/releases/download/v1.6.8/cri-containerd-cni-1.6.8-linux-amd64.tar.gz

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

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

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

wget 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://github.com/kubernetes-sigs/cri-tools/releases/download/v1.24.2/crictl-v1.24.2-linux-amd64.tar.gz

1.7.关闭防火墙

systemctl disable --now firewalld

1.8.关闭SELinux

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.网络配置(俩种方式二选一)

# 方式一
# 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.进行时间同步 (lb除外)

#&nbsp;服务端

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;10.0.0.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;客户端

yum&nbsp;install&nbsp;chrony&nbsp;-y
cat&nbsp;>&nbsp;/etc/chrony.conf&nbsp;<<&nbsp;EOF&nbsp;
pool&nbsp;192.168.1.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.配置免密登录

yum&nbsp;install&nbsp;-y&nbsp;sshpass
ssh-keygen&nbsp;-f&nbsp;/root/.ssh/id_rsa&nbsp;-P&nbsp;''
export&nbsp;IP="192.168.1.61&nbsp;192.168.1.62&nbsp;192.168.1.63&nbsp;192.168.1.64&nbsp;192.168.1.65&nbsp;192.168.1.66&nbsp;192.168.1.67&nbsp;192.168.1.68&nbsp;192.168.1.70&nbsp;192.168.1.75"
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.添加启用源 (lb除外)

#&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版本以上 (lb除外)

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

#&nbsp;查看已安装那些内核
rpm&nbsp;-qa&nbsp;|&nbsp;grep&nbsp;kernel
kernel-core-4.18.0-358.el8.x86_64
kernel-tools-4.18.0-358.el8.x86_64
kernel-ml-core-5.16.7-1.el8.elrepo.x86_64
kernel-ml-5.16.7-1.el8.elrepo.x86_64
kernel-modules-4.18.0-358.el8.x86_64
kernel-4.18.0-358.el8.x86_64
kernel-tools-libs-4.18.0-358.el8.x86_64
kernel-ml-modules-5.16.7-1.el8.elrepo.x86_64

#&nbsp;查看默认内核
grubby&nbsp;--default-kernel
/boot/vmlinuz-5.16.7-1.el8.elrepo.x86_64

#&nbsp;若不是最新的使用命令设置
grubby&nbsp;--set-default&nbsp;/boot/vmlinuz-「您的内核版本」.x86_64

#&nbsp;重启生效
reboot

#&nbsp;v8 整合命令为:
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 整合命令为:
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 (lb除外)

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.修改内核参数 (lb除外)

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

#&nbsp;没有IPv6选择不配置即可
2408:8207:78cc:5cc1:181c::10&nbsp;k8s-master01
2408:8207:78cc:5cc1:181c::20&nbsp;k8s-master02
2408:8207:78cc:5cc1:181c::30&nbsp;k8s-master03
2408:8207:78cc:5cc1:181c::40&nbsp;k8s-node01
2408:8207:78cc:5cc1:181c::50&nbsp;k8s-node02
2408:8207:78cc:5cc1:181c::60&nbsp;k8s-node03
2408:8207:78cc:5cc1:181c::70&nbsp;k8s-node04
2408:8207:78cc:5cc1:181c::80&nbsp;k8s-node05
2408:8207:78cc:5cc1:181c::90&nbsp;lb01
2408:8207:78cc:5cc1:181c::100&nbsp;lb02

192.168.1.61&nbsp;k8s-master01
192.168.1.62&nbsp;k8s-master02
192.168.1.63&nbsp;k8s-master03
192.168.1.64&nbsp;k8s-node01
192.168.1.65&nbsp;k8s-node02
192.168.1.66&nbsp;k8s-node03
192.168.1.67&nbsp;k8s-node04
192.168.1.68&nbsp;k8s-node05
192.168.1.70&nbsp;lb01
192.168.1.75&nbsp;lb02
192.168.1.69&nbsp;lb-vip
EOF

2.k8s基本组件安装

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

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

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

#解压
tar&nbsp;-xzf&nbsp;cri-containerd-cni-1.6.8-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#k8s.gcr.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

2.1.5启动并设置为开机启动

systemctl&nbsp;daemon-reload
systemctl&nbsp;enable&nbsp;--now&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-v1.24.2-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解压k8s安装包

#&nbsp;下载安装包
#&nbsp;wget&nbsp;https://dl.k8s.io/v1.24.2/kubernetes-server-linux-amd64.tar.gz
#&nbsp;wget&nbsp;https://github.com/etcd-io/etcd/releases/download/v3.5.4/etcd-v3.5.4-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.2.2查看版本

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

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

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

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.1_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.1_linux_amd64"&nbsp;-O&nbsp;/usr/local/bin/cfssljson

#&nbsp;软件包内有
cp&nbsp;cfssl_1.6.1_linux_amd64&nbsp;/usr/local/bin/cfssl
cp&nbsp;cfssljson_1.6.1_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.1.61,192.168.1.62,192.168.1.63,2408:8207:78cc:5cc1:181c::10,2408:8207:78cc:5cc1:181c::20,2408:8207:78cc:5cc1:181c::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.1.69为高可用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.1.69,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.1.61,192.168.1.62,192.168.1.63,192.168.1.64,192.168.1.65,192.168.1.66,192.168.1.67,192.168.1.68,192.168.1.75,192.168.1.75,10.0.0.40,10.0.0.41,2408:8207:78cc:5cc1:181c::10,2408:8207:78cc:5cc1:181c::20,2408:8207:78cc:5cc1:181c::30,2408:8207:78cc:5cc1:181c::40,2408:8207:78cc:5cc1:181c::50,2408:8207:78cc:5cc1:181c::60,2408:8207:78cc:5cc1:181c::70,2408:8207:78cc:5cc1:181c::80,2408:8207:78cc:5cc1:181c::90,2408:8207:78cc:5cc1:181c::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的证书

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;设置一个集群项

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://192.168.1.69: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

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://192.168.1.69: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

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://192.168.1.69: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证书

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

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://192.168.1.69: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;ca.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-ca.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kube-proxy.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheduler-key.pem
admin-key.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca-key.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-ca-key.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kube-proxy-key.pem&nbsp;&nbsp;scheduler.pem
admin.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-ca.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kube-proxy.pem
apiserver.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controller-manager.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-client.csr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sa.key
apiserver-key.pem&nbsp;&nbsp;controller-manager-key.pem&nbsp;&nbsp;front-proxy-client-key.pem&nbsp;&nbsp;sa.pub
apiserver.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controller-manager.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;front-proxy-client.pem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheduler.csr

#&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.1.61:2380'
listen-client-urls:&nbsp;'https://192.168.1.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.1.61:2380'
advertise-client-urls:&nbsp;'https://192.168.1.61:2379'
discovery:
discovery-fallback:&nbsp;'proxy'
discovery-proxy:
discovery-srv:
initial-cluster:&nbsp;'k8s-master01=https://192.168.1.61:2380,k8s-master02=https://192.168.1.62:2380,k8s-master03=https://192.168.1.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.1.62:2380'
listen-client-urls:&nbsp;'https://192.168.1.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.1.62:2380'
advertise-client-urls:&nbsp;'https://192.168.1.62:2379'
discovery:
discovery-fallback:&nbsp;'proxy'
discovery-proxy:
discovery-srv:
initial-cluster:&nbsp;'k8s-master01=https://192.168.1.61:2380,k8s-master02=https://192.168.1.62:2380,k8s-master03=https://192.168.1.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.1.63:2380'
listen-client-urls:&nbsp;'https://192.168.1.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.1.63:2380'
advertise-client-urls:&nbsp;'https://192.168.1.63:2379'
discovery:
discovery-fallback:&nbsp;'proxy'
discovery-proxy:
discovery-srv:
initial-cluster:&nbsp;'k8s-master01=https://192.168.1.61:2380,k8s-master02=https://192.168.1.62:2380,k8s-master03=https://192.168.1.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.1.63:2379,192.168.1.62:2379,192.168.1.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.1.63:2379&nbsp;|&nbsp;c0c8142615b9523f&nbsp;|&nbsp;&nbsp;&nbsp;3.5.4&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.1.62:2379&nbsp;|&nbsp;de8396604d2c160d&nbsp;|&nbsp;&nbsp;&nbsp;3.5.4&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.1.61:2379&nbsp;|&nbsp;33c9d6df0037ab97&nbsp;|&nbsp;&nbsp;&nbsp;3.5.4&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.高可用配置

5.1.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.1.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.1.61:6443&nbsp;check
&nbsp;server&nbsp;&nbsp;k8s-master02&nbsp;&nbsp;192.168.1.62:6443&nbsp;check
&nbsp;server&nbsp;&nbsp;k8s-master03&nbsp;&nbsp;192.168.1.63:6443&nbsp;check
EOF

5.1.3lb01配置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;ens18&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;mcast_src_ip&nbsp;192.168.1.70
&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.1.69
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;track_script&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chk_apiserver&nbsp;
}&nbsp;}

EOF

5.1.4lb02配置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;ens18
&nbsp;&nbsp;&nbsp;&nbsp;mcast_src_ip&nbsp;192.168.1.75
&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.1.69
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;track_script&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chk_apiserver&nbsp;
}&nbsp;}

EOF

5.1.5健康检查脚本配置(两台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.1.6启动服务

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

5.1.7测试高可用

#&nbsp;能ping同

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

#&nbsp;能telnet访问

[root@k8s-node02&nbsp;~]#&nbsp;telnet&nbsp;192.168.1.69&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.1.61&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-cluster-ip-range=10.96.0.0/12,fd00::/108&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.1.61:2379,https://192.168.1.62:2379,https://192.168.1.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.1.62&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-cluster-ip-range=10.96.0.0/12,fd00::/108&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.1.61:2379,https://192.168.1.62:2379,https://192.168.1.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.1.63&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--service-cluster-ip-range=10.96.0.0/12,fd00::/108&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.1.61:2379,https://192.168.1.62:2379,https://192.168.1.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::/108&nbsp;\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--cluster-cidr=172.16.0.0/12,fc00::/48&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=64&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配置

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://192.168.1.69: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;k8s-node03&nbsp;k8s-node04&nbsp;k8s-node05;&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所有k8s节点创建相关目录

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.2所有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.3启动kubelet

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

8.2.4查看集群

[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.24.3
k8s-master02&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;16s&nbsp;&nbsp;&nbsp;v1.24.3
k8s-master03&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;16s&nbsp;&nbsp;&nbsp;v1.24.3
k8s-node01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;14s&nbsp;&nbsp;&nbsp;v1.24.3
k8s-node02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;14s&nbsp;&nbsp;&nbsp;v1.24.3
k8s-node03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;14s&nbsp;&nbsp;&nbsp;v1.24.3
k8s-node04&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;14s&nbsp;&nbsp;&nbsp;v1.24.3
k8s-node05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ready&nbsp;&nbsp;&nbsp;&nbsp;<none>&nbsp;&nbsp;&nbsp;14s&nbsp;&nbsp;&nbsp;v1.24.3
[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;k8s-node03&nbsp;k8s-node04&nbsp;k8s-node05;&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::/48&nbsp;
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.安装Calico

9.1.1更改calico网段

#&nbsp;vim&nbsp;calico.yaml
vim&nbsp;calico-ipv6.yaml
#&nbsp;calico-config&nbsp;ConfigMap处
&nbsp;&nbsp;&nbsp;&nbsp;"ipam":&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"calico-ipam",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"assign_ipv4":&nbsp;"true",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"assign_ipv6":&nbsp;"true"
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;IP
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;"autodetect"

&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;IP6
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;"autodetect"

&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;CALICO_IPV4POOL_CIDR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;"172.16.0.0/12"

&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;CALICO_IPV6POOL_CIDR
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;"fc00::/48"

&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;name:&nbsp;FELIX_IPV6SUPPORT
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value:&nbsp;"true"

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

#&nbsp;本地有IPv6&nbsp;使用&nbsp;calico-ipv6.yaml&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-56cdb7c587-bq6rn&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;10m
kube-system&nbsp;&nbsp;&nbsp;calico-node-2vt27&nbsp;&nbsp;&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;10m
kube-system&nbsp;&nbsp;&nbsp;calico-node-7bg82&nbsp;&nbsp;&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;10m
kube-system&nbsp;&nbsp;&nbsp;calico-node-gg9tv&nbsp;&nbsp;&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;10m
kube-system&nbsp;&nbsp;&nbsp;calico-node-lkdhr&nbsp;&nbsp;&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;10m
kube-system&nbsp;&nbsp;&nbsp;calico-node-msl6j&nbsp;&nbsp;&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;10m
kube-system&nbsp;&nbsp;&nbsp;calico-node-qqrx9&nbsp;&nbsp;&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;10m
kube-system&nbsp;&nbsp;&nbsp;calico-node-tgzxk&nbsp;&nbsp;&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;10m
kube-system&nbsp;&nbsp;&nbsp;calico-node-z59jx&nbsp;&nbsp;&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;10m
kube-system&nbsp;&nbsp;&nbsp;calico-typha-6775694657-xzmcs&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;10m
[root@k8s-master01&nbsp;~]#

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;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.1.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.1.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.1.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.1.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.1.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.1.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.1.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.1.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.1.64
PING&nbsp;192.168.1.64&nbsp;(192.168.1.64):&nbsp;56&nbsp;data&nbsp;bytes
64&nbsp;bytes&nbsp;from&nbsp;192.168.1.64:&nbsp;seq=0&nbsp;ttl=63&nbsp;time=0.358&nbsp;ms
64&nbsp;bytes&nbsp;from&nbsp;192.168.1.64:&nbsp;seq=1&nbsp;ttl=63&nbsp;time=0.668&nbsp;ms
64&nbsp;bytes&nbsp;from&nbsp;192.168.1.64:&nbsp;seq=2&nbsp;ttl=63&nbsp;time=0.637&nbsp;ms
64&nbsp;bytes&nbsp;from&nbsp;192.168.1.64:&nbsp;seq=3&nbsp;ttl=63&nbsp;time=0.624&nbsp;ms
64&nbsp;bytes&nbsp;from&nbsp;192.168.1.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;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

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
eyJhbGciOiJSUzI1NiIsImtpZCI6Inlkd0RKV2lQeUpvNmRxb2hENDlRM3llWU55T2I4dC0wVW5KOU5PZGRSdWsifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjU1NzA2MTQwLCJpYXQiOjE2NTU3MDI1NDAsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiZGVhYjdiY2MtNDczZS00N2E0LThlYTUtZmE4Yjc2NGY2NGJjIn19LCJuYmYiOjE2NTU3MDI1NDAsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.YzVrnSq3IuWn3qqY_td7SPqHisT40Gk1neMx7Ok9PsTxd6RASWxv9Y_1-T4wpE3ljaCiXxMBETzvYDgf-y9FOxm6drkQWWLk9UUuvOdjexxkdTXztB5X_0BiUGcMlvD3CA0qFbnzcg1cLpokypkuOnlSB8GBTleNyhQvHQnoXU3fSUCNRR_zHu2bRNgJZwABPMdj2D42EQndD56ZDP4g4IK8iMVJbaM-6DdNjdpfQx2358n8syPDjznu_1W1fUvwxY3eoEyeuIEjDbEeYEwh5uW2k4NOjW8m54W2YgmipDuqpvIB_-cnAo_KzF2q1Qb4WpIAItGkkpgwQFMFagKRTg

https://192.168.1.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.1.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测试

#部署应用
[root@k8s-master01&nbsp;~]#&nbsp;vim&nbsp;cby.yaml&nbsp;
[root@k8s-master01&nbsp;~]#&nbsp;cat&nbsp;cby.yaml&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;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
[root@k8s-master01&nbsp;~]#&nbsp;kubectl&nbsp;&nbsp;apply&nbsp;-f&nbsp;cby.yaml

#查看端口
[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.1.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://[2408:8207:78cc:5cc1:181c::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运维交流社区》