04. Kubernetes安装篇(kubectl 安装)

04. Kubernetes安装篇架构解析
高可用架构图 组件用途
Etcd Cluster ectd是一个键值数据库,主要存放Kubernetes数据,如创建的资源、变更的操作等; Maste

架构解析

高可用架构图

组件用途

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

Like (0)
CSDN的头像CSDN
Previous 2024年7月26日
Next 2024年7月26日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注