k8s实践手册

k8s安装改端口

sed -i “s/service-node-port-range=32000-32767/service-node-port-range=1-65535/g” /etc/kubernetes/manifests/kube-apiserver.yaml

kubectl常用命令拾遗

https://blog.csdn.net/UsamaBinLaden6976498/article/details/108372629

# 查看pod资源描述文件
kubectl get pod xxxx -o yaml


报错排查

在这里插入图片描述
Back-off restarting failed container【启动失败,容器又是不断启动就会报错】

Kubernetes容器root权限

https://www.orchome.com/1305

k8s网络

Kubernetes网络三部曲之一~Pod网络
深入理解k8s网络
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
/etc/hosts主机名查询静态表(本地域名解析配置)
/etc/resolv.conf(-----dns域名解析服务配置)
在这里插入图片描述

kubectl proxy --address=‘0.0.0.0’ --accept-hosts=‘^*$’ --port=8009
kubectl proxy 让外部网络访问K8S service的ClusterIP
curl http://[k8s-master]:8009/api/v1/namespaces/[namespace-name]/services/[service-name]/proxy
在这里插入图片描述

在这里插入图片描述
不同节点的pod如何实现ip互通
在这里插入图片描述
在这里插入图片描述

eth0是实际的网卡,docker0(负责分配pod的网桥)和veth0是linux支持的虚拟网络设备

在pod容器内:
同一集群内所有pod的ip都能ping通

k8s一个服务暴露后,其集群内ip对应的域名是
{SVCNAME}.{NAMESPACE}.svc.{CLUSTER_DOMAIN}
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

flannel和calico

https://www.cnblogs.com/lizexiong/p/14916531.html

问题搜集

  1. 集群安装的时候有节点安装不上,重启在重新执行命令kubectl join

查看k8s dashbord的token

查看k8s 的 dashboard 的token

kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token >>token.txt

查看linux打印的k8s服务的日志

journalctl -f -u kubelet.service

详解k8s的4种Service类型

https://blog.csdn.net/weixin_40274679/article/details/107887678

apiVersion: v1
kind: Service
metadata:
  name: service-python
spec:
  ports:
  - port: 3000 服务的端口
    protocol: TCP
    targetPort: 443 集群内的访问端口
    nodePort: 30080 集群外的访问端口
  selector:
    run: pod-python
  type: NodePort

ansible安装k8s

https://github.com/ReSearchITEng/kubeadm-playbook

问题搜集

在这里插入图片描述

网络

重启也需要一点时间
kubeadm ——k8S新节点加入集群

k8s安装部署问题、解决方案汇总‘’
network: failed to set bridge addr: “cni0“ already has an IP address different from 10.244.2.1/2

ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1

systemctl restart docker

kubernetes的cni0和flannel.1的关系?
当容器运行之后,节点之间多了个虚拟接口cni0,它是由flanneld创建的一个虚拟网桥叫cni0,供pod本地通信使用.flanneld为每个pod创建一对veth虚拟设备,一端放在容器接口上,一端放在cni0桥上.

删除了cnio,flanel没有重建,然后我卸载节点的k8s,在运行common.sh重装,之后运行kubeadm join

#!/bin/bash

red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
plain='\033[0m'

echo -e "
##############################################################
#${red}欢迎使用centos7一键安装k8s脚本${plain}
#${yellow}请先设置/etc/hosts主机名解析${plain}
# File Name: diskless.sh
# Version: V1.0
# Author: guoshao
# Blog Site: https://space.bilibili.com/302918169/video
# Created Time : 2021-09-03 00:46:18
# Environment: CentOS 7.2 Kernal 3.10.0
##############################################################
"
sleep 6

system_optimization(){
echo -e "${red}进行系统优化${plain}"
# 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
# 关闭selinux
# 临时禁用selinux
setenforce 0
# 永久关闭 修改/etc/sysconfig/selinux文件设置
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 禁用交换分区
swapoff -a
# 永久禁用,打开/etc/fstab注释掉swap那一行。
sed -i 's/.*swap.*/#&/' /etc/fstab
# 修改内核参数
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
# 执行配置k8s阿里云源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
}

docker_install(){
echo -e "${red}安装dokcer,并进行优化${plain}"
sleep 2

# 安装ifconfig
yum install -y wget net-tools
# 安装docker所需的工具
yum install -y yum-utils device-mapper-persistent-data lvm2 >>/dev/null
# 配置阿里云的docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#优化docker参数
mkdir -p /etc/docker
cat <<EOF >/etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://pzpl72fb.mirror.aliyuncs.com"],
  "storage-driver": "overlay2",
  "storage-opts": ["overlay2.override_kernel_check=true"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}
EOF
# 指定安装这个版本的docker-ce
yum install -y docker-ce-18.09.9-3.el7
# 启动docker
systemctl enable docker && systemctl start docker
}
system_optimization 
docker_install >> /dev/null
yum install -y kubectl-1.16.0-0 kubeadm-1.16.0-0 kubelet-1.16.0-0 >> /dev/null
# 启动kubelet服务
systemctl enable kubelet && systemctl start kubelet

k8s使从节点运行kubectl命令以及helm命令

在从节点yum install -y helm即可

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile
# 将主节点(master节点)中的【/etc/kubernetes/admin.conf】文件拷贝到从节点相同目录下:
scp -r /etc/kubernetes/admin.conf ${node1}:/etc/kubernetes/admin.conf
# scp -r /etc/kubernetes/admin.conf 172.16.191.137:/etc/kubernetes/admin.conf

Kubernetes系列之二:将Slave节点加入集群

主机运行
kubeadm token create --print-join-command
然后将打印出的命令在从节点运行

kubeadm join 172.16.191.140:6443 --token 2wd0wr.9myr29xa7mkw7wtz     --discovery-token-ca-cert-hash sha256:cef005c63beda21da666aace14961b059e21151113599961a9a11ceb49a91e3a

存储nfs

configmap挂载文件权限修改
configmap defaultMode
在这里插入图片描述

安装服务端(nfs-server,以及rpc的支持)—这个要在每台需要的机器上都执行该操作

yum install -y nfs-utils


mkdir -p /mnt/nfs
vim /etc/exports
/mnt/nfs/ xxx.xxx.xxx.0/24(rw,sync,fsid=0)

systemctl start rpcbind.service
systemctl start nfs-server.service
systemctl enable rpcbind.service
systemctl enable nfs-server.service

exportfs -r

exportfs

在这里插入图片描述
服务端搭建

k8s、nfs、mysql、changing ownership of ‘/var/lib/mysql/’: Operation notpermitted
集群每个节点都要挂载,不然mysql持久卷重启后飘逸(被重新部署)到另外一台机器上,如果那台机器没有nfs挂载,但是mysql有配置了nfs挂载,那么就会报错,说没有权限。
no_root_squash

部署mysql报错:
–initialize specified but the data directory has files in it. Aborting. 解决

  1. 遇到该问题是因为之前data文件夹中生成过文件,将data文件夹下的文件全部删除行重新执行命令即可
  2. I have come across this issue. Work around is to delete the pv and pvc and recreate them.(推荐这种)

kubectl delete pv pvc-14dab137-ad32-4b0d-9102-25b87a8344f9

k8s强制删除po&pv&pvc和ns&namespace方法

https://blog.csdn.net/qq_39565646/article/details/119923208?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1.pc_relevant_default&spm=1001.2101.3001.4242.2&utm_relevant_index=4
  1. –ignore-db-dir=lost+found在这里插入图片描述

在这里插入图片描述

静态存储:提前写死了分配了多大的内存
动态存储:可随时添加内存
Kubernetes(K8S)集群搭建,NFS静态/动态供给PV,Deployment/StatefulSet创建应用服务
https://www.bilibili.com/video/BV17p4y1C76m?p=2

k8s中级篇-Helm安装nfs-client-provisioner
在这里插入图片描述
使用案例
在这里插入图片描述

k8s卸载

kubeadm reset -f
modprobe -r ipip
lsmod
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd

yum remove kubectl-1.16.0-0 kubeadm-1.16.0-0 kubelet-1.16.0-0 -y

k8s集群安装

在这里插入图片描述
在这里插入图片描述

sudo hostnamectl set-hostname <newhostname>

然后所有节点都绑定一下
vi /etc/hosts

172.16.191.150 master
172.16.191.151 node1
172.16.191.152 node2

【使用脚本一键部署k8s,支持多节点,默认安装k8s-dashboard-哔哩哔哩】 https://b23.tv/C7YWYQg

使用kube-proxy让外部网络访问K8S service的ClusterIP

https://blog.csdn.net/liyingke112/article/details/76022267

https://gitee.com/guoshaosong/scripts/
在这里插入图片描述

k8s-master,k8s-node1,k8s-node2设置成2核cpu,2G内存
在这里插入图片描述
在k8s-master,k8s-node1,k8s-node2机器上分别执行如下操作

vi /etc/hosts
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

主节点
mkdir /k8s
然后传文件到/k8s

helm chart

脚本语法

quote 以字符串输出
在这里插入图片描述
-A打印后面的500,查看渲染值
helm install weda-stack weda-stack-3.2.0.tgz --dry-run|grep “# Source: weda-stack/charts/unified-file-service/templates/db-helper/prod/job.yaml” -A 500

在这里插入图片描述
在这里插入图片描述

安装

在这里插入图片描述

安装脚本

curl -SLO https://get.helm.sh/helm-v3.7.1-linux-amd64.tar.gz
tar -zxvf  helm-v3.7.1-linux-amd64.tar.gz
mv  linux-amd64/helm  /usr/local/bin/helm
helm version
# 添加国内 阿里云的 镜像源
helm repo remove stable
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo update
# 搜索:
helm search repo redis

kubectl create ns [命名空间]

helm install <chart实例名> <chart所在父目录路径> -n [命名空间]
helm uninstall <chart实例名>
helm list #列出所有的chart实例
helm upgrade <chart实例名> <chart所在父目录路径> -n [命名空间]


# 打包charts
helm package ./

在这里插入图片描述

在这里插入图片描述

k8s常用命令

创建命名空间

kubectl get namespace
kubectl create namespace test-env
### 回答1: K8s CKA(Certified Kubernetes Administrator)是Kubernetes官方认证的一项技能评估考试,它旨在评估和认可参与者对Kubernetes集群管理的能力和知识。 K8s CKA官方教材提供了学习和准备考试所需的理论和实践材料。该教材涵盖了Kubernetes的核心概念,包括集群体系结构、工作负载管理、网络和服务发现、存储和卷管理、调度和节点管理等。官方教材提供了相应的实践场景和示例,帮助学习者理解和掌握Kubernetes的各个方面。 通过学习K8s CKA官方教材,学习者可以系统地了解Kubernetes的工作原理和核心组件。他们将学会如何部署和管理Kubernetes集群,如何创建和管理应用程序、服务和资源,如何进行故障排除和监控等。此外,官方教材还提供了一些最佳实践和使用Kubernetes的常见问题解答,帮助学习者在实际应用中更好地使用Kubernetes。 K8s CKA官方教材可以作为学习和备考的指南,提供了全面且详细的教学材料。通过仔细阅读和实践官方教材,学习者可以充分了解Kubernetes的各种功能和用途,为参加CKA考试做好充分的准备。此外,官方教材还提供了一些参考链接和资源,供学习者进一步深入学习和研究Kubernetes。 总之,K8s CKA官方教材是学习和备考CKA考试的重要资源,它提供了理论和实践相结合的学习材料,帮助学习者全面掌握Kubernetes的概念、原理和操作。通过学习官方教材,学习者将具备成为优秀Kubernetes管理员的技能和知识。 ### 回答2: Kubernetes Certified Administrator(CKA)考试是一种认证,旨在测试对Kubernetes集群管理和操作的能力。CKA考试的官方教材是CKA考试准备手册。 CKA官方教材提供全面的指导,帮助准备参加CKA考试的人掌握必要的知识和技能。该教材涵盖了许多关键主题,包括Kubernetes体系结构、部署和配置Kubernetes集群、管理集群中的节点、应用程序和服务、监视和故障排除、安全性等。 这本教材以实际操作为重点,通过给出示例和详细的步骤说明,帮助读者了解如何使用kubectl命令行工具来操作和管理Kubernetes集群。此外,该教材还包含了一系列练习题和实际案例,帮助读者应用所学的知识解决实际问题。 CKA官方教材的优点之一是其结构化和组织良好。教材分为几个模块,每个模块都涵盖了一个特定的主题,并提供了相应的学习材料和练习题。这种结构化的学习方式使得读者能够有条不紊地学习和复习相关的知识点,并确保他们在CKA考试中获得良好的成绩。 总之,CKA官方教材是准备参加CKA考试的必备资源。它提供了全面的指导和学习材料,帮助读者掌握Kubernetes集群管理和操作的技能。通过仔细研究和实践这些材料,考生可以在CKA考试中取得成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值