首页 > 其他分享 >安装CKA考试环境(二)

安装CKA考试环境(二)

时间:2022-12-05 18:15:09浏览次数:65  
标签:kubectl CKA kubernetes yaml dashboard kubeadm k8s 安装 考试

1.1 安装前说明

官方文档:https://kubernetes.io/docs/setup/production-environment/

安装步骤:

  1. 安装Runtime
  2. 安装kubeadm和kubelet
  3. master节点初始化
  4. node节点配置
  5. CNI网络插件
  6. Metrics Server
  7. Dashboard

说明:

于2022年12月4日,目前CKA考试使用的是ubuntu20版本的系统,v1.25版本的k8s

我的环境:

节点 IP地址
k8s-master 192.168.2.100
k8s-node01 192.168.2.101
k8s-node02 192.168.2.102

1.2 安装Runtime

官方文档:https://kubernetes.io/docs/setup/production-environment/container-runtimes/

选择v1.25版本

image-20221204143236367

官方提供了四种安装方式

image-20221204143310233

docker在v1.24版本就已经不被支持了,我们这里选择安装containerd

无论选择哪种Runtimes都无所谓,考试不会考Runtime

考试的时候k8s官网是能访问的,我们可以在上面搜配置

xshell→工具→发送键到所有会话,让这三台虚拟机都执行同样的命令

#修改hosts文件
vim /etc/hosts
192.168.2.100 k8s-master01
192.168.2.101 k8s-node01
192.168.2.102 k8s-node02


#切换到root账号
sudo su -

#先卸载已经安装的docker
apt-get remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine docker-ce containerd -y

				  
#如果服务器没有默认的docker源,首先配置源
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

				  
#安装Containerd 
apt-get install containerd -y

#配置Containerd的内核 
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

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

sudo sysctl --system

#创建Containerd的配置文件
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
sed -i 's#k8s.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml

# 启动Containerd
systemctl daemon-reload
systemctl restart containerd
systemctl enable containerd
ctr plugin ls

1.3 安装kubeadm

官方文档:https://kubernetes.io/docs/setup/production-environment/tools/

image-20221204154253108

image-20221204154428199

安装kubeadm

#设置内核参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

#配置国内源
# 添加apt-key
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
	
# 添加源
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" >/etc/apt/sources.list.d/kubernetes.list

#目前CKA考试版本为v1.25.1
sudo apt-get update
sudo apt-get install -y kubelet=1.25.1-00 kubeadm=1.25.1-00 kubectl=1.25.1-00
sudo apt-mark hold kubelet kubeadm kubectl

#配置镜像源并拉取镜像
swapoff -a
vim /etc/fstab #注释自动挂载swapoff
kubeadm config images pull \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version 1.25.1

#不配置镜像源默认使用官方源,国内无法拉取
root@k8s-master01:~# kubeadm init --help | grep image
      --image-repository string              Choose a container registry to pull control plane images from (default "registry.k8s.io")
kubectl version

考试的时候无需修改源,因为服务器在国外,是可以访问到官方镜像的

kubectl只需要在一台节点上安装即可。

kubectl可以不安装在master或node节点上,只需要安装在跟集群可以通信的任意节点都行。

1.4 初始化集群

注意这里改为你自己的集群master地址

#在master上操作
kubeadm init --apiserver-advertise-address 192.168.2.100   --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket "unix:///var/run/containerd/containerd.sock" --kubernetes-version 1.25.1

#得到node节点加入集群的命令,如下命令在node节点上执行,注意此token有效期为24h
kubeadm join 192.168.2.100:6443 --token krt1vv.bnk3klkq8y7lwhc6 \
	--discovery-token-ca-cert-hash sha256:7498a2009c7933527cf3630f5a0a19860bec7ae1de4313fa9f824d008e54253d

#添加环境变量,kubeadm连接集群使用的是admin.conf文件
export KUBECONFIG=/etc/kubernetes/admin.conf
#或者执行如下命令效果一样,将admin.conf放入.kube/目录下,k8s会默认从这找
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

#另开会话窗口查看日志
tail -f /var/log/syslog

如果初始化失败

kubeadm reset -f #之后按提示删除某些文件夹还有配置文件

Token过期处理

#查看当前token list
kubeadm token list
TOKEN                     TTL         EXPIRES                USAGES                   DESCRIPTION                                                EXTRA GROUPS
krt1vv.bnk3klkq8y7lwhc6   23h         2022-12-06T05:56:54Z   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token


#重新生成node节点加入集群的命令
kubeadm token create --print-join-command

#在node节点测试是否跟master节点通信正常,如下表示正常通信
root@k8s-node01:~# curl https://192.168.2.100:6443 -k
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {},
  "code": 403
}

官方的方法,不建议使用

#创建新的token
$ kubeadm token create
wn3apj.yq8iz8fesbpf5wc6

#使用openssl创建密钥,再拼接,有一点复杂,不推荐使用。

参考:官方文档

1.5 安装网络组件calico

git clone https://github.com/dotbalo/k8s-ha-install.git
cd k8s-ha-install
git branch -a 
git checkout manual-installation-v1.19.x
cd /root/k8s-ha-install/calico
ls
cp calico.yaml calico.yaml.bak
cat calico.yaml| grep image #可以看到镜像地址是国内的

#查看pod网段
cat /etc/kubernetes/manifests/kube-apiserver.yaml
--service-cluster-ip-range=10.96.0.0/12
host: 192.168.2.100
可以看到宿主机,svc网段

kubectl get cm -n kube-system kubeadm-config -oyaml
发现没有指定Pod地址,我们可以直接进行创建

vim calico.yaml
#搜索CALICO_IPV4POOL_CIDR修改ip地址
     - name: CALICO_IPV4POOL_CIDR
              value: "172.16.0.0/16"

kubectl create -f calico.yaml

#如果更新了yaml文件则
kubectl replace -f calico.yaml
kubectl get pod -n kube-system

#查看报错日志
kubectl logs -f calico-node-xxxx -n kube-system

1.6 安装MetricsServer

cd /root/k8s-ha-install/kubeadm-metrics-server
cp comp.yaml comp.yaml.bak
kubectl create -f comp.yaml

报一个 CrashLoopBackOff的错误,

image-20221205155646241

看日志

kubectl logs -f metrics-server-74db45c9df-4s9lv -n kube-system
panic: unable to create request header authentication config: open /etc/kubernetes/pki/front-proxy-ca.crt: no such file or directory
#提示找不到 /etc/kubernetes/pki/front-proxy-ca.crt文件
#将master上的这个文件拷贝到其他节点上,需要注意ubuntu的root用户不能直接登录,需要指定用户
scp /etc/kubernetes/pki/front-proxy-ca.crt tz@k8s-node01:/tmp
scp /etc/kubernetes/pki/front-proxy-ca.crt tz@k8s-node02:/tmp

#在node01上操作
cp /tmp/front-proxy-ca.crt /etc/kubernetes/pki/front-proxy-ca.crt
#在node02上操作
cp /tmp/front-proxy-ca.crt /etc/kubernetes/pki/front-proxy-ca.crt

cd /root/k8s-ha-install/kubeadm-metrics-server
kubectl delete -f comp.yaml
kubectl create -f comp.yaml
kubectl get pod -A  #就可以了

考试的时候calico跟metrics都已经装好了

1.7 安装dashboard

dashboard是k8s的图形化管理工具,需要安装两个yaml文件,分别是

  • dashboard-user.yaml(管理员用户)
  • dashboard.yaml
cd /root/k8s-ha-install/dashboard
cp dashboard-user.yaml dashboard-user.yaml.bak
cp dashboard.yaml dashboard.yaml.bak
kubectl create -f  dashboard.yaml -f dashboard-user.yaml

查看

kubectl get ns  #namespace的缩写
NAME                   STATUS   AGE
default                Active   155m
kube-node-lease        Active   155m
kube-public            Active   155m
kube-system            Active   155m
kubernetes-dashboard   Active   48s  #在这呢

kubectl get pod -n kubernetes-dashboard #可以看到这个命名空间下有两个pod

kubectl get svc -n  kubernetes-dashboard #可以看到端口号
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.102.107.170   <none>        8000/TCP        3m14s
kubernetes-dashboard        NodePort    10.102.99.166    <none>        443:30306/TCP   3m14s

#查看node的ip地址
kubectl get nod -owide
#使用node节点的ip地址加上30306端口就能访问到kubernetes-dashboard

如果使用谷歌浏览器打开之前需要做如下配置,MAC上使用火狐浏览器不需要改参数

右击谷歌浏览器→右击google Chrome→点击属性

image-20221205163719335

在目标这一栏,加上 --test-type --ignore-certificate-errors,注意有空格

image-20221205163828072

v1.24版本之前使用token方法

kubectl get secret -n kube-system | grep admin-user
admin-user-token-qlmbr         kubernetes.io/service-account-token   3      44s

#describe查看某类资源的详细信息
kubectl describe secret admin-user-token-qlmbr -n kube-system
#得到token值,复制到浏览器中即可

v1.24版本之后查看token方法

参考:https://www.cnblogs.com/tz90/p/16949826.html

使用dashboard

image-20221205170923260

执行命令

image-20221205170944016

查看DaemonSet

在每个节点都会启动

image-20221205171042820

点开calico-node的edit

image-20221205171240178

如果hostNetwork为true会使用宿主机的IP地址

image-20221205171346178

这就是为什么有些pod是使用的pod的地址,有些使用的是宿主机的地址

image-20221205171520093

1.8 参考资料

标签:kubectl,CKA,kubernetes,yaml,dashboard,kubeadm,k8s,安装,考试
From: https://www.cnblogs.com/tz90/p/16953039.html

相关文章

  • WIN7 安装QT Creator
     1、到官网下载QT在线安装器,https://download.qt.io/official_releases/online_installers/2、注册或登陆之后,选择要安装的组件,Win7能选择的最新版本只能是5.15版本参......
  • 安装CKA考试环境(一)
    报了CKA考试,环境搭建顺便也学习一下。1.1下载ubuntu2022年12月4日,CKA考试系统版本为ubuntu20.04下载地址:https://ubuntu.com/download/server选择20.041.2虚拟机......
  • Pypi 超时或安装第三方库失败的解决办法
    一、使用国内镜像方案(推荐)经常在使用python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源......
  • Docker安装
    教程https://www.runoob.com/docker/docker-tutorial.html主题以下讲解windows安装官网下载https://www.docker.com安装报错参考https://learn.microsoft.com/zh......
  • Java学习系列:package-info.java的作用
    场景学习​​spring-kafka​​​开源源码的时候,发现每个目录都有一个​​package-info.java​​文件,查找其用法,并整理出来。环境软件版本spring-boot2.1.8.RELEASEspring-ka......
  • jupyter安装后new里没有tensorflow
    明明安装了tensorflow但是没有显示,于是记录一下怎么搞出来因为jupyter默认在base环境中,所以需要在pytorch中配置jupyter。1.打开AnacondaPrompt输入“condalist”查......
  • linux中nginx的安装
    【是什么】  nginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。  由俄罗斯的程序设计师lgorSysoev所开发,官方测试nginx能够支撑5......
  • docker 安装mysql8
    1.环境准备1.centos7  2.安装包下载1.百度网盘下载链接:https://pan.baidu.com/s/1AfRUkiXD9Oee1hA5az9SXg提取码:gs7b 2.版本说明此安装包为dockermysql8......
  • MongoDB——linux中yum命令安装及配置
    一、创建mongodb-org-3.4.repo文件vi/etc/yum.repos.d/mongodb-org-3.4.repo  将下面内容添加到创建的文件中[mongodb-org-3.4]name=MongoDBRepositorybaseurl=htt......
  • 【ES系列一】——单机版安装教程
    安装环境:  系统版本:CentOS7.0.1406   jdk版本:1.8.0_111   ES版本:6.0.0一、下载  下载之后放到对应目录https://www.elastic.co/downloads/elasti......