Kubernetes管理员认证(CKA)

[复制链接]
feng 发表于 2022-9-30 14:06:23 | 显示全部楼层 |阅读模式
本帖最后由 feng 于 2023-3-15 09:43 编辑




Kubernetes管理员认证(CKA)
CKA全称Certified Kubernetes Administrator,是Linux基金会和Cloud Native Computing Foundation(CNCF)官方推出的全球Kubernetes管理员认证,对于技术团队,CKA认证可以作为团队成员的技术能力的一个考察标准,也可以作为整个团队对Kubernetes云平台的管理能力的有力证明;


考试难易程度

考试只允查阅官方文档,在考试过程中你只能去
https://kubernetes.io/
https://github.com

如果去了其它的网站,按作弊处理;
考试时长:3小时;
多少分及格:CKA满分100分,66分及格;

考试费用

美元:$300
人民币:¥2088
有一次免费重考的机会,一年后过期;

一、准备服务器:
准备3台服务器,并在hosts文件中添加记录。
192.168.15.77 logserver
192.168.15.78 lognode1
192.168.15.79 lognode2


Kubernetes部署环境准备
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  #永久
setenforce 0  #临时
# 关闭swap(k8s禁止虚拟内存以提高性能)
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
swapoff -a #临时
# 在master添加hosts

[root@lognode1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.15.77 logserver
192.168.15.78 lognode1
192.168.15.79 lognode2



二、添加源,开始安装:
添加相应的源 由于需要下载Kubeadm,Kubelet和Kubernetes-cni,多以需要添加源。国外的直接添加google源,具体可以网上搜索。国内的推荐阿里云的源,命令如下:
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

下载Docker & Kubeadm & Kubelet & Kubernetes-cni
yum update && yum install -y docker.io kubelet kubernetes-cni=0.6.0-00 kubeadm


Kubernetes部署环境准备
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config    #永久
setenforce 0      #临时
或者:
# systemctl stop firewalld NetworkManager
# systemctl disable firewalld NetworkManager
# setenforce 0
setenforce: SELinux is disabled
# systemctl disable firewalld && systemctl stop firewalld
# getenforce 0
# iptables -F
# iptables -X
# iptables -Z
# iptables -P FORWARD ACCEPT
# 关闭swapk8s禁止虚拟内存以提高性能)
sed -ri 's/.*swap.*/#&/' /etc/fstab    #永久
swapoff -a     #临时
# master添加hosts
cat >> /etc/hosts << EOF
192.168.15.77  master
192.168.15.78  node1
192.168.15.79  node2
EOF
# 设置网桥参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  #生效
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
ntpdate ntp.aliyun.com   ##国内最好使用阿里服务器时间同步
阿里云时间同步服务器
ntp1.aliyun.com,ntp2.aliyun.com,ntp2.aliyun.com,……
升级Linux内核为4.44版本
#安装内核
yum --enablerepo=elrepo-kernel install -y kernel-lt
查看当前的所有内核版本
cat /boot/grub2/grub.cfg | grep menuentry
查看当前启动内核版本
grub2-editenv list
修改启动内核版本,设置开机从新内核启动
grub2-set-default 'CentOS Linux (5.4.219-1.el7.elrepo.x86_64) 7 (Core)'
#注意:设置完内核后,需要重启服务器才会生效。
#查询内核
uname -r
调整内核参数,对于k8s
cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
#将优化内核文件拷贝到/etc/sysctl.d/文件夹下,这样优化文件开机的时候能够被调用
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
#手动刷新,让优化文件立即生效
sysctl -p /etc/sysctl.d/kubernetes.conf
调整系统临时区 — 如果已经设置时区,可略过
#设置系统时区为中国/上海
timedatectl set-timezone Asia/Shanghai
#将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
#重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond
7、关闭系统不需要的服务
systemctl stop postfix && systemctl disable postfix
8、设置日志保存方式
1.创建保存日志的目录
mkdir /var/log/journal
2.创建配置文件存放目录
mkdir /etc/systemd/journald.conf.d
3.创建配置文件
cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
[Journal]
Storage=persistent
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
SystemMaxUse=10G
SystemMaxFileSize=200M
MaxRetentionSec=2week
ForwardToSyslog=no
EOF
4.重启systemd journald的配置
systemctl restart systemd-journald
9、打开文件数调整 (可忽略,不执行)
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
Kubernetes安装具体步骤
所有服务器节点安装 Docker/kubeadm/kubelet/kubectl
Kubernetes 默认容器运行环境是Docker,因此首先需要安装Docker
1)安装 Docker
更新dockeryum
yum install wget -y
安装指定版本的docker
yum install docker-ce-19.03.13 -y
yum install docker -y (这个安装的Docker版本偏旧) 1.13.x
配置加速器加速下载 https://cr.console.aliyun.com/
/etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
https://gg3gwnry.mirror.aliyuncs.com
然后执行:
systemctl enable docker.service
不然会提示警告;
那么接下来需要搭建:kubeadmkubeletkubectl
2)添加k8s的阿里云YUM
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
到时候下载k8s的相关组件才能找到下载源;
2)安装 kubeadmkubelet kubectl
yum install kubelet-1.25.2 kubeadm-1.25.2 kubectl-1.25.2 -y
然后执行:
systemctl enable kubelet.service
不然会提示警告;
查看有没有安装:
yum list installed | grep kubelet
yum list installed | grep kubeadm
yum list installed | grep kubectl
查看安装的版本: kubelet --version
Kubelet:运行在cluster所有节点上,负责启动POD和容器;
Kubeadm:用于初始化cluster的一个工具;
Kubectlkubectlkubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件;
此时应该重启一下centos
3)部署Kubernetes Master主节点
#执行部署命令  ???
kubeadm init \
--apiserver-advertise-address=192.168.15.77 \
--image-repository registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0 \
--kubernetes-version v1.25.2 \
--service-cidr=10.98.0.0/12 \
--pod-network-cidr=10.99.0.0/16 \
此命令在master机器上执行;
执行一直报错:
使用 docker 命令拉取镜像
将镜像文件重命名后,将旧镜像删除
#重命名
docker tag registry.aliyuncs.com/google_containers/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0
# 删除原有镜像
docker rmi registry.aliyuncs.com/google_containers/coredns:1.8.0
解决:重启一下centos,然后再执行上面的 kubeadm init 命令;
说明:
service-cidr 的选取不能和PodCIDR及本机网络有重叠或者冲突,一般可以选择一个本机网络和PodCIDR都没有用到的私网地址段,比如PODCIDR使用10.244.0.0/16, 那么service cidr可以选择10.96.0.0/12,网络无重叠冲突即可;
接下来在master机器上执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u)(id -g) $HOME/.kube/config
kubectl get nodes
接下来把node节点加入Kubernetes master中,在Node机器上执行;
向集群添加新节点,执行的命令就是kubeadm init最后输出的kubeadm join命令:
kubeadm join 192.168.15.77:6443 --token z48w44.etbygtov011o0h7n \
    --discovery-token-ca-cert-hash sha256:8d05b8fe02a676b1532bfeabd9ec77a4e3f31a3005952b11428e96234b984b2a
部署网络插件
下载kube-flannel.yml文件
应用kube-flannel.yml文件得到运行时容器
kubectl apply -f kube-flannel.yml (在master机器上执行)
  
然后查看节点状态: kubectl get nodes (在master机器上执行)
说明还没有就绪,需要等一会儿,然后节点就就绪了;
  
至此我们的k8s环境就搭建好了;
查看运行时容器pod (一个pod里面运行了多个docker容器)
kubectl get pods -n kube-system
Kubernetes部署“容器化应用”
Docker应用-->docker里面部署一个java程序(springboot
Kubernetes集群中部署一个Nginx
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
访问地址:http://NodeIPort
Kubernetes集群中部署一个Tomcat
kubectl create deployment tomcat --image=tomcat
kubectl expose deployment tomcat --port=8080 --type=NodePort
访问地址:http://NodeIPort
K8s部署微服务(springboot程序)
1、项目打包(jarwar-->可以采用一些工具gitmavenjenkins
2、制作Dockerfile文件,生成镜像;
3kubectl create deployment nginx --image= 你的镜像
4、你的springboot就部署好了,是以docker容器的方式运行在pod里面的
安装成功
查看是否安装成功
kubelet --version
kubectl version
kubeadm version
启动kubelet
systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet
安装docker
yum install -y docker-ce-20.10.3 docker-ce-selinux-20.10.3
#启动docker并设置开机自启动
systemctl enable docker
systemctl start docker
安装kubernetes相关服务
yum install -y kubelet kubeadm kubectl
# 设置kuberlet为开机自启动
systemctl enable kubelet
systemctl start kubelet
输出dockerkubernetes的信息
docker version
kubectl version
查看所有节点
kubectl get nodes
添加worker节点到集群
直接在worker节点上执行我们在 kubeadm init 最后得到的那一段命令,格式如下:
kubeadm join <masterIp>:<masterPort> --token <token> \
    --discovery-token-ca-cert-hash sha256:<hash>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|RuZhuo ( 鄂ICP备16015978号-8 )

GMT+8, 2024-5-16 16:43 , Processed in 0.028609 second(s), 28 queries .

Powered by RuZhuo

快速回复 返回顶部 返回列表