本帖最后由 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 # 关闭swap(k8s禁止虚拟内存以提高性能) 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 更新docker的yum源 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 不然会提示警告; 那么接下来需要搭建:kubeadm、kubelet、kubectl (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 EOF 到时候下载k8s的相关组件才能找到下载源; (2)安装 kubeadm,kubelet 和 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的一个工具; Kubectl:kubectl是kubenetes命令行工具,通过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、项目打包(jar、war)-->可以采用一些工具git、maven、jenkins 2、制作Dockerfile文件,生成镜像; 3、kubectl 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 输出docker和kubernetes的信息 docker version kubectl version 查看所有节点 kubectl get nodes 添加worker节点到集群 直接在worker节点上执行我们在 kubeadm init 最后得到的那一段命令,格式如下: kubeadm join <masterIp>:<masterPort> --token <token> \ --discovery-token-ca-cert-hash sha256:<hash>
|