架构解析
高可用架构图
组件用途
etcd集群
ectd 是一个键值数据库,主要存储Kubernetes 数据,例如创建的资源、修改的操作等。
Kubernetes控制节点主要用于控制Kubernetes节点。
Kubernetes 工作节点主要用于运行部署到Kubernetes 集群的Pod。
作为Kubernetes 的控制组件,Kubernetes 集群内的所有流量都经过Kube-APIServer。
Kubernetes 控制组件主要用于监控Kubernetes 集群的状态。
Kubernetes 的调度组件主要用于控制Kubernetes 集群中pod 调度运行的节点。
每个Kubernetes 节点直接进行负载均衡,通常使用keepailved 和haproxy 的组合来实现Kubelet 分发。
Kubernetes代理组件主要用于检查Kubernetes集群中pod的执行状态。
Kubernetes中的网络代理组件主要用于保证Kubernetes集群中的pod访问控制。
部署集群
主机规划
主机名称主机地址主机资源安装组件主机用途k8s-master-01192.168.23.1392C4G; 200Ghaproxy+keepalived+ectd+Kubernetes-Master 集群管理节点k8s-master-02192.168.23.1402C4G; 200Ghaproxy+keepalived+ectd+Kubernetes-Master 集群管理节点k8s-master-03192.168.23.1412C4G; 200Ghaproxy+keepalived+ectd+Kubernetes-Master 集群管理节点k8s-node-01192.168.23.1421C2G; 200GKubernetes-Node 集群操作节点k8s-node-02192.168.23。 200G Barnett-Node 集群运行节点Vip192.168.23.100 集群虚拟IP
软件规划
软件名称软件版本备注LinuxCentOS Linux release 7.9.2009 (Core) CentOS8 版本推荐Kubernetes1.20.9Kernel6.9.7-1.el7.elrepo.x86_64Docker26.1.4kubectl1.20.9kubeadm1.20.9kubelet1.20.9haproxy1.5.18keepalived1 3. 5kube -apiserver1.20.9kube-controller-manager1.20.9kube-scheduler1.20.9kube-proxy1.20.9coredns1.7.0etcd3.4.13-0pause3.2calico/cni3.20.6calico/pod2daemon-flexvol3.20.6calico/node3。 20.6calico/kube-controllers3.20.6metrics-server0.6.0dashboard2.4.0
基础配置
配置源
所有节点都在运行
美味的酱汁
猫/etc/yum.repos.d/CentOS-7-ali.repo \’EOF\’
# CentOS-Base.repo
#
# 镜像系统使用客户端的连接IP地址和
# 更新各个镜像的状态,并选择需要更新的镜像。
# 地理位置靠近客户。您应该使用它来更新CentOS。
# 除非你手动选择另一个镜像。
#
如果# Mirrorlist=不起作用,您可以尝试以下命令作为后备:
# 注释掉baseurl=行。
#
#
[根据]
name=CentOS-$releasever – 基础- Mirrors.aliyun.com
故障转移方法=优先级
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpg检查=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#已发布更新
[更新信息]
name=CentOS-$releasever – 更新- Mirrors.aliyun.com
故障转移方法=优先级
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpg检查=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#有用的附加包
[奖金]
name=CentOS-$releasever – 附加功能- Mirrors.aliyun.com
故障转移方法=优先级
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpg检查=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#扩展现有包功能的附加包
结束后
k8s源码
猫/etc/yum.repos.d/kubernetes.repo EOF
[库伯内特]
名称=kubernetes
基本URL=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
有效=1
gpg检查=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg \\
https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
结束后
检查源配置
yum -y install vim wget Telnet
配置时间同步阿里云
所有节点都在运行
配置时间同步
#所有节点必须正在运行
安装yum -y ntpdate chrony
sed -ri \’s/^server/#server/g\’ /etc/chrony.conf
echo \’服务器ntp.aliyun.com iburst\’ /etc/chrony.conf
启动systemctl chronyd
启用systemctl chronyd
配置定期同步
猫/var/spool/cron/root EOF
# rsync 蚂蚁时钟
*/10 * * * * /usr/sbin/ntpdate ntp.aliyun.com
结束后
检查时间同步
chronyc 源统计信息-v
检查并升级内核
所有节点都在运行
Kubernetes 集群要求Linux 系统为稳定版本4.18 或更高版本。如果不满足,则必须升级以避免异常。
检查内核版本
uname -r
升级内核
rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://elrepo.org/linux/elrepo/el7/x86_64/RPMS/elrepo-release-7.0-8.el7.elrepo.noarch.rpm
yum update -y –exclude=kernel* 重新启动
yum –enablerepo=elrepo-kernel 安装kernel-ml-devel kernel-ml -y
yum –enablerepo=elrepo-kernel 安装kernel-lt-devel kernel-lt -y
更改内核启动顺序
#显示内核序列号
awk -F\\\’ \’$1==\’menuentry \’ {print i++ \’ : \’ $2}\’ /etc/grub2.cfg
#选择内核序列号
grub2 设置默认值0
grub2-mkconfig -o /boot/grub2/grub.cfg
重启
消息:
要查看可用核心和核心序列号,请运行命令awk -F\’ ‘$1==’menuentry ‘ {print i++ ‘ : ‘ $2}’ /etc/grub2.cfg。使用命令grub2-set-default 0 将新内核设置为默认引导内核。执行命令grub2-mkconfig -o /boot/grub2/grub.cfg生成grub文件。只需重新启动并启动服务器即可。
关闭firewalld、dnsmasq、selinux、swap
所有节点都在运行
关闭防火墙
systemctl 停止防火墙
systemctl 禁用防火墙
# 关闭firewalld,因为我担心没有填写防火墙策略
关闭dnsmasq
systemctl 停止dnsmasq
systemctl 禁用dnsmasq
关闭SELinux
设置力0
sed -i \’s#SELINUX=enforcing#SELINUX=disabled#g\’ /etc/sysconfig/selinux
关闭掉期
swapoff -a sysctl -w vm.swappiness=0
sed -ri \’/^[^#]*swap/s@^@#@\’ /etc/fstab
#请关闭交换,因为它会影响Docker 性能
集群调优配置
所有节点都在运行
/etc/security/limits.conf
cat /etc/security/limits.conf EOF
*软noproc 655350
*硬noproc 655350
* Softno文件655350
*哈德诺文件655350
结束后
#用于调整用户的系统资源限制。要求大于65535
/etc/sysctl.conf
#注意:4.19及以上内核版本必须使用nf_conntrack,4.18以下内核版本使用nf_conntrack_ipv4。
modprobe–ip_vs
modprobe –ip_vs_rr
modprobe –ip_vs_wrr
modprobe –ip_vs_sh
modprobe –nf_conntrack
猫/etc/sysctl.conf EOF
ip_vs
ip_vs_lc
ip_vs_wlc
ip_vs_rr
ip_vs_wrr
ip_vs_lbc
ip_vs_lblcr
ip_vs_dh
ip_vs_sh
ip_vs_fo
ip_vs_nq
ip_vs_sed
ip_vs_ftp
nf_conntrack
ip_表
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
伊皮普
结束后
启用systemctl –now systemd-modules-load
#用于调整内核资源限制
/etc/sysctl.d/k8s.conf
猫/etc/sysctl.d/k8s.conf EOF
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_announce=2
net.ipv4.ip_forward=1
net.ipv4.tcp_max_tw_buckets=5000
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog=1024
net.ipv4.tcp_synack_retries=2
# 要求iptables 不处理桥接数据
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-arptables=1
net.netfilter.nf_conntrack_max=2310720
fs.inotify.max_user_watches=89100
fs.may_detach_mounts=1
fs.文件最大值=52706963
fs.nr_open=52706963
vm.overcommit_memory=1
# 启用OOM
vm.panic_on_oom=0
# 禁用交换空间使用并仅允许系统OOM。
虚拟机交换=0
#ipvs优化
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_keepalive_probes=10
结束后
#用于设置系统调优参数
/etc/security/limits.d/k8s.conf
猫/etc/security/limits.d/k8s.conf EOF
*软nproc 1048576
*硬nproc 1048576
* Softno文件1048576
*硬诺菲勒1048576
根软件nproc 1048576
roothard nproc 1048576
root软件nofile 1048576
根硬盘nofile 1048576
结束后
#用于调整最大打开文件数
/etc/rsyslog.conf
sed -ri \’s/^\\$ModLoad imjournal/#/\’ /etc/rsyslog.conf
sed -ri \’s/^\\$IMJournalStateFile/#/\’ /etc/rsyslog.conf
sed -ri \’s/^#(DefaultLimitCORE)=/\\1=100000/\’ /etc/systemd/system.conf
sed -ri \’s/^#(DefaultLimitNOFILE)=/\\1=100000/\’ /etc/systemd/system.conf
#用于优化日志处理,减少磁盘IO
/etc/ssh/sshd_config
sed -ri \’s/^#(UseDNS )yes/\\1no/\’ /etc/ssh/sshd_config
#用于优化SSH连接
配置hostnamehost
所有节点都在运行
配置主机名
所有节点单独运行
hostnamectl 设置- 主机名k8s-master-01
hostnamectl 设置- 主机名k8s-master-02
hostnamectl 设置- 主机名k8s-master-03
hostnamectl 设置- 主机名k8s-node-01
hostnamectl 设置- 主机名k8s-node-02
配置主机
猫/etc/hosts EOF
192.168.23.139 k8s-master-01
192.168.23.140 k8s-master-02
192.168.23.141 k8s-master-03
192.168.23.142 k8s-节点-01
192.168.23.143 k8s-节点-02
结束后
分析验证
ping k8s-master-01
ping k8s-master-02
ping k8s-master-03
ping k8s-node-01
ping k8s-node-02
基础组件
所有节点都在运行
基本组件安装ipvs模块
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack
基本组件安装Docker
安装依赖项
yum 安装-y yum-utils
yum-config-manager –add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker
yum -y 安装docker-ce docker-ce-clicontainerd.io docker-compose-plugin
配置Docker
mkdir /etc/docker
猫/etc/docker/daemon.json EOF
{
‘注册表镜像’: [
\’https://11777p0c.mirror.aliyuncs.com\’,
\’https://hub-mirror.c.163.com\’,
\”https://mirror.baidubce.com\”,
\’https://docker.m.daocloud.io\’,
“https://docker.1panel.live”
],
\’DNS\’: [
“8.8.8.8”,
“114.114.114.114”
],
\’logdriver\’: \’json 文件\’,
\’日志选项\’: {
\’最大文件\’: \’10\’,
\’最大尺寸\’: \’100m\’
},
\’存储驱动程序\’: \’覆盖2\’,
\’exec-opts\’: [\’native.cgroupdriver=systemd\’]
}
结束后
启动码头工人
启用systemctl –now docker
启用systemctl –nowcontainerd
显示版本
码头工人版本
命令完成
yum install -y bash-完成
# 安装完成后,重新登录shell 或重新启动系统。
消息
有关选择Docker 版本的信息,请参阅https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/。如果没有对应k8s版本的Docker版本信息,可以到上一个版本查找。
基本组件安装kubelet、kubeadm、kubectl
显示可用版本
yum list kubeadm.x86_64 –showduplicates sort -r | yum list kubeadm.x86_64 –showduplicates sort -r |
安装组件
yum -y 安装kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9
检查版本
kubeadm 版本
kubectl版本
kubelet –版本
启动组件
重新加载systemctl 守护进程
启用systemctl –now kubelet
命令完成
安装yum -y bash-completion
源/usr/share/bash-completion/bash_completion
来源(kubectl 补全bash)
回声,所以
urce <(kubectl completion bash)\” >> ~/.bashrc
高可用组件
Master节点安装
高可用组件安装–haproxy
安装haproxy
yum -y install haproxy
配置haproxy
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg_`date +%F`
#定义主机名称和IP地址
HOST_NAME_1=k8s-master-01
HOST_IP_1=192.168.23.139
HOST_NAME_2=k8s-master-02
HOST_IP_2=192.168.23.140
HOST_NAME_3=k8s-master-03
HOST_IP_3=192.168.23.141
cat > /etc/haproxy/haproxy.cfg << EOF
global
maxconn 2000
ulimit-n 16384
log 127.0.0.1 local0 err
stats timeout 30s
defaults
log global
mode http
option httplog
timeout connect 5000
timeout client 50000
timeout server 50000
timeout http-request 15s
timeout http-keep-alive 15s
#haproxy监控检测
frontend monitor-in
bind *:33305
mode http
option httplog
monitor-uri /monitor
#haproxy状态检测
listen stats
bind *:8006
mode http
stats enable
stats hide-version
stats uri /stats
stats refresh 30s
stats realm Haproxy\\ Statistics
stats auth admin:admin
#kubernetes代理配置
frontend k8s-master
bind 0.0.0.0:16443
bind 127.0.0.1:16443
mode tcp
option tcplog
tcp-request inspect-delay 5s
default_backend k8s-master
#kubernetes后端配置
backend k8s-master
mode tcp
option tcplog
option tcp-check
balance roundrobin
default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
server $HOST_NAME_1 $HOST_IP_1:6443 check
server $HOST_NAME_2 $HOST_IP_2:6443 check
server $HOST_NAME_3 $HOST_IP_3:6443 check
EOF
启动haproxy
systemctl enable –now haproxy
高可用组件安装–keepalived
安装keepalived
yum -y install keepalived
配置keepalived配置健康检查脚本
mkdir -p /etc/keepalived/script
cat > /etc/keepalived/script/check_apiserver.sh << \”EOF\”
!#/bin/bash
ERR=0
for k in $(seq 1 5)
do
CHECK_CODE=$(pgrep kube-apiserver)
if [[ $CHECK_CODE = \”\” ]]; then
ERR=$(expr $ERR + 1)
sleep 5
continue
else
ERR=0
break
fi
done
if [[ $ERR != \”0\” ]]; then
echo \”systemctl stop keepalived\”
/usr/bin/systemctl stop keepalived
exit 1
else
exit 0
fi
EOF
配置keepalived(仅k8s-master-01执行)
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_`date +%F`
HOST_IP=$(ip addr | grep dynamic | awk -F\’ \’ \'{print $2}\’ | awk -F\’/\’ \'{print $1}\’)
HOST_VIP=192.168.23.100
INTERFACE=ens32
TYPES=MASTER
cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_script chk_apiserver {
script \”/etc/keepalived/script/check_apiserver.sh\”
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface $INTERFACE
mcast_src_ip $HOST_IP
virtual_router_id 51
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass K8SHA_KA_AUTH
}
virtual_ipaddress {
$HOST_VIP
}
# track_script {
# chk_apiserver
# }
}
EOF
配置keepalived(k8s-master-02和k8s-master-03执行)
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_`date +%F`
HOST_IP=$(ip addr | grep dynamic | awk -F\’ \’ \'{print $2}\’ | awk -F\’/\’ \'{print $1}\’)
HOST_VIP=192.168.23.100
INTERFACE=ens32
cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_script chk_apiserver {
script \”/etc/keepalived/script/check_apiserver.sh\”
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state BACKUP
interface $INTERFACE
mcast_src_ip $HOST_IP
virtual_router_id 51
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass K8SHA_KA_AUTH
}
virtual_ipaddress {
$HOST_VIP
}
# track_script {
# chk_apiserver
# }
}
EOF
启动keepalived
systemctl enable –now keepalived
集群部署
初始化文件
Master节点执行
默认配置文件
kubeadm-config.yaml
生成kubeadm文件
kubeadm config print init-defaults –component-configs \\
KubeProxyConfiguration,KubeletConfiguration > kubeadm-config.yaml
# 查看所需镜像
kubeadm config images list –config kubeadm-config.yaml
编辑镜像下载文件
cat > ./images_kube.sh << \’EOF\’
#!/bin/bash
images=(
kube-apiserver:v1.20.0
kube-controller-manager:v1.20.0
kube-scheduler:v1.20.0
kube-proxy:v1.20.0
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.aliyuncs.com/google_containers/$imageName
done
EOF
下载镜像
chmod +x ./images.sh && ./images.sh
初始化集群
仅k8s-master-01操作
初始化k8s-master-01节点后,会在/etc/kubernetes目录下生成对应的证书和配置。最后将其他master节点、node节点加入到k8s-master-01即可。
kubeadm init \\
–apiserver-advertise-address=192.168.23.139 \\
–control-plane-endpoint=k8s-master-01 \\
–image-repository registry.aliyuncs.com/google_containers \\
–kubernetes-version v1.20.9 \\
–service-cidr=10.96.0.0/16 \\
–pod-network-cidr=83.12.0.0/16
如果初始化失败,需要重置后再初始化
#初始化重置命令
kubeadm reset
节点管理
添加master节点
创建令牌
仅k8s-master-01节点执行
#生成token
kubeadm token create –print-join-command
#生成key
kubeadm init phase upload-certs –upload-certs
添加节点
k8s-master-02和k8s-master-03节点执行
根据生成的令牌组合成添加master的命令,并在k8s-master-02和k8s-master-03节点上执行
kubeadm join k8s-master-01:6443 –token xpeers.u6ok4v3ju2oaq25t \\
–discovery-token-ca-cert-hash sha256:137e28cb3a7be99914bc8ec2ce83c269dc724768c5cb6e3e06700c4494e6afad \\
–control-plane –certificate-key fc56a938a45bf445b69458b1afb5ac9aaa66fabbd5c3414db6696a8fdb51ff2d
添加worker节点
创建令牌
仅k8s-master-01节点执行
#生成token
kubeadm token create –print-join-command
添加节点
k8s-node-01和k8s-node-02节点执行
根据生成的令牌添加worker,并在k8s-node-01和k8s-node-02节点上执行
kubeadm join k8s-master-01:6443 –token lx60mi.isnids1u0qlmybv7 \\
–discovery-token-ca-cert-hash sha256:799108e2b9f6fe87aa1af2e4bf3ddc22b379e2ed35dd7b82ddbc3a433d1d976a
设置control节点
Master节点都执行
设置管理节点
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
设置环境变量
cat >> /root/.bashrc << EOF
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF
source /root/.bashrc
查看所有节点
kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# k8s-master-01 NotReady control-plane,master 13m v1.20.9
# k8s-master-02 NotReady <none> 93s v1.20.9
# k8s-master-03 NotReady control-plane,master 6m1s v1.20.9
# k8s-node-01 NotReady <none> 6m52s v1.20.9
# k8s-node-02 NotReady <none> 6m40s v1.20.9
各个节点NotReady的原因是没有安装网络插件。网络插件有:flannel、calico、canal、kube-router、weave net等,这里使用calico网络插件。
删除节点
格式
kubectl delete nodes 节点名称
举例
kubectl delete nodes k8s-node-01
核心组件
仅k8s-master-01节点执行
核心组件安装–calico
安装时间较长,需要耐心等待
下载calico安装文件
curl -O https://docs.projectcalico.org/v3.20/manifests/calico.yaml
calico默认文件
calico-v3_20.yaml
安装calico
kubectl apply -f ./calico.yaml
检查calico
kubectl get -n kube-system pod | grep calico
其他组件
仅k8s-master-01节点执行(用不着可以不安装)
其他组件安装–metrics-server
下载metrics-server安装文件
wget -O /root/install_k8s/metrics-server-v0.6.0.yaml \\
https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.0/components.yaml
metrics-server默认文件
metrics-server-v0_4_3.yaml
安装metrics-server
如果镜像地址下载失败,可以尝试使用镜像地址:registry.aliyuncs.com/google_containers/metrics-server:v0.6.0
kubectl apply -f ./metrics-server-v0.6.0.yaml
检查metrics-server
kubectl top nodes
其他组件安装–dashboard
下载dashboard安装文件
wget -O dashboard-v2.4.0.yaml https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
默认配置文件
dashboard-v2_4_0.yaml
配置dashboard文件
# 使用 NodePort
sed -i \’39a\\ type: NodePort\’ dashboard-v2.4.0.yaml
sed -i \’43a\\ nodePort: 30443\’ dashboard-v2.4.0.yaml
# 使用 LoadBalancer
sed -i \’39a\\ type: LoadBalancer\’ dashboard-v2.4.0.yaml
# 创建自定义证书时需要
sed -i \’48,58d\’ dashboard-v2.4.0.yaml
# 镜像拉取策略
sed -i \’/imagePullPolicy/s@Always@IfNotPresent@\’ dashboard-v2.4.0.yaml
安装dashboard
kubectl apply -f dashboard-v2.4.0.yaml
创建证书
openssl genrsa -out dashboard.key 2048
openssl req -days 36500 -new -out dashboard.csr -key dashboard.key -subj \’/CN=dashboard-cert\’
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
kubectl create secret generic kubernetes-dashboard-certs –from-file=dashboard.key \\
–from-file=dashboard.crt -n kubernetes-dashboard
查看dashboard访问端口
kubectl get svc -A |grep kubernetes-dashboard
创建dashboard账号
cat > /root/install_k8s/dash.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
—
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
– kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
EOF
kubectl apply -f /root/install_k8s/dash.yaml
获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath=\”{.secrets[0].name}\”) -o go-template=\”{{.data.token | base64decode}}\”
验证集群
查看集群中所有容器
查看集群中所有容器是否启动
kubectl get pod –all-namespaces
查看集群中主要Service
查看Cluster的Service
kubectl get service
查看DNS的Service
kubectl get service -n kube-system
查看集群中节点网络是否通
查看集群中pod运行节点
kubectl get pod –all-namespaces -owide
ping测试任意ip地址
ping 83.12.151.130
查看集群中所有节点状态
kubectl get nodes
#以上关于04. Kubernetes安装篇的相关内容来源网络仅供参考,相关信息请以官方公告为准!
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93842.html