赞
踩
k8s 集群主机清单
主机名 | ip地址 |
---|---|
master | 1.50 |
node-0001 | 1.51 |
node-0002 | 1.52 |
node-0003 | 1.53 |
node-0004 | 1.54 |
node-0005 | 1.55 |
harbor | 1.30 |
事先准备
所有的k8s集群主机卸载防火墙和禁用swap交换空间(docker、k8s建议禁用swap)
安装工具
dnf install -y kubeadm kubelet kubectl containerd.io ipvsadm ipset iproute-tc
修改配置文件
vim /etc/containerd/config.toml
61:sandbox_image = "harbor:443/k8s/pause:3.9"
125:SystemdCgroup = true
154行新插入: [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://harbor:443"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor:443"]
endpoint = ["https://harbor:443"]
[plugins."io.containerd.grpc.v1.cri".registry.configs."harbor:443".tls]
insecure_skip_verify = true
配置内核参数
[root@master ~]# cat /etc/modules-load.d/containerd.conf
overlay
br_netfilter
xt_conntrack
[root@master ~]# systemctl start systemd-modules-load.service
[root@master ~]# cat /etc/sysctl.d/99-kubernetes-cri.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.netfilter.nf_conntrack_max = 1000000
[root@master ~]# sysctl -p /etc/sysctl.d/99-kubernetes-cri.conf
设置Tab补全功能键
[root@master ~]# source <(kubeadm completion bash|tee /etc/bash_completion.d/kubeadm)
# 使用kubeadm completion bash生成适用于bash shell的kubeadm命令补全脚本,通过重定向将以上脚本作为source命令的输入,既激活kubeadm的命令补全功能,同时使用tee命令将补全脚本保存在指定的kubeadm文件中,确保未来bash会话h中,无需执行以上命令就可以享受kubeadm命令补全功能。
[root@master ~]# source <(kubectl completion bash|tee /etc/bash_completion.d/kubectl)
#同理如上,此次针对kubectl命令的补全功能
对master主控节安装
测试系统环境
[root@master ~]# kubeadm init --config=init/init.yaml --dry-run 2>error.log
# --dry-run 模拟测试,不会对系统环境产生影响
[root@master ~]# cat error.log
# 查看是否有生成错误信息和警告
[root@master ~]# rm -rf error.log /etc/kubernetes/tmp
# 删除前任初始化的残留tmp,可以说没必要,模拟测试不会产生任何临时文件
主控节点初始化
[root@master ~]# kubeadm init --config=init/init.yaml | tee init/init.log # 初始化主控节点,会生成/etc/kubernetes/admin.conf [root@master ~]# mkdir -p $HOME/.kube [root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config [root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config # 给本地用户创建个集中便捷,具有管理员权限的k8s客户端配置环境,无需通过系统目录的配置admin.conf对k8s客户端进行管理,更好使用kubectl等工具管理初始化好的k8s集群 # 复制 admin.conf 到 ~/.kube/config 是为了方便本地用户(尤其是非 root 用户)使用 kubectl 等 Kubernetes 客户端工具与刚刚初始化的集群进行交互。 # 验证安装结果 [root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master NotReady control-plane 19s v1.26.0 # notready 尚未准备好接收工作负载 #部署calico网络插件 [root@master calico]# kubectl apply -f calico.yaml [root@master calico]# kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready control-plane 23m v1.26.0 #此时ready准备好进行工作负载 # Calico 是一个流行的开源网络解决方案,常用于 Kubernetes 集群中提供网络连接、策略管理和安全性。 # 可使用 kubectl get pods -n calico-system 等命令监控 Calico 组件的状态,确保它们成功启动且运行正常。
安装计算节点(node系列)
1.先从master主机获取凭证
# 查看 token [root@master ~]# kubeadm token list TOKEN TTL EXPIRES abcdef.0123456789abcdef 23h 2022-04-12T14:04:34Z # 删除 token [root@master ~]# kubeadm token delete abcdef.0123456789abcdef bootstrap token "abcdef" deleted # 创建 token [root@master ~]# kubeadm token create --ttl=0 --print-join-command # ttl设置token到期周期,0为无限期 kubeadm join 192.168.1.50:6443 --token fhf6gk.bhhvsofvd672yd41 --discovery-token-ca-cert-hash sha256:ea07de5929dab8701c1bddc347155fe51c3fb6efd2ce8a4177f6dc03d5793467 # 只需要复制以上生成的命令到各个计算节点粘贴执行就好
2.对各个计算节点进行配置(是否防火墙关掉/禁用swap、安装k8s相关软件包、配置内核参数)
3.逐个加入master集群
kubeadm join 192.168.1.50:6443 --token fhf6gk.bhhvsofvd672yd41 --discovery-token-ca-cert-hash sha256:ea07de5929dab8701c1bddc347155fe51c3fb6efd2ce8a4177f6dc03d5793467
通过master主机查看所有加入集群的计算节点主机
# 验证节点工作状态
[root@master ~]# kubectl get nodes
# 验证容器工作状态
[root@master ~]# kubectl -n kube-system get pods
集群管理命令
子命令 | 说明 |
---|---|
help | 用于查看命令及子命令的帮助信息 |
cluster-info | 显示集群的相关配置信息 |
version | 查看服务器及客户端的版本信息 |
api-resources | 查看当前服务器上所有的资源对象 |
api-versions | 查看当前服务器上所有资源对象的版本 |
config | 管理当前节点上kubeconfig 的认证信息 |
kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
bindings v1 true Binding
endpoints ep v1 true Endpoints
# 查看资源对象类型
namespaced 是否属于某命名空间,如果是false则是集群级别的,不属于任何特定命名空间,而是与整个集群的运行状态相关。
kind 资源类型名
config
# 查看当前认证使用的用户及证书 [root@master ~]# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO * kubernetes-admin@kubernetes kubernetes kubernetes-admin # 使用 view 查看详细配置 [root@master ~]# kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://192.168.1.50:6443 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes current-context: kubernetes-admin@kubernetes kind: Config preferences: { } users: - name: kubernetes-admin user: client-certificate-data: REDACTED client-key-data: REDACTED
对其他主机进行管理授权
设置本地用户的 Kubernetes 配置文件,以便于使用
kubectl
等命令行工具以管理员身份访问和管理 Kubernetes 集群
[root@harbor ~]# dnf install -y kubectl
[root@harbor ~]# mkdir -p $HOME/.kube
[root@harbor ~]# rsync -av master:/etc/kubernetes/admin.conf $HOME/.kube/config
[root@harbor ~]# chown $(id -u):$(id -g) $HOME/.kube/config
# 验证节点工作状态
[root@harbor ~]# kubectl get nodes
pod由一个或者多个容器组成
pod是k8s中最小的管理元素
pod是一个服务的多个进程的聚合单位
同一个pod共享网络ip以及权限、共享主机名称、共享存储设备
pod管理命令
子命令 | 说明 | 备注 |
---|---|---|
run/create | 创建资源对象 | 可输出资源文件模板 |
get | 查看资源对象的状态信息 | 常用参数: -o 显示格式 |
describe | 查询资源对象的属性信息 | |
logs | 查看容器的报错信息 | 常用参数: -c 容器名称 |
exec | 在某一个容器内执行特定的命令 | 可选参数: -c 容器名称 |
cp | 在容器和宿主机之间拷贝文件或目录 | 可选参数: -c 容器名称 |
delete | 删除资源对象 | 可选参数: -l 标签 |
get
kubectl get pods
# 查看默认名称空间default下的pods
kubectl get pods -o name/wide/yaml/json
#看pod名、详细信息、yaml格式的、json格式的详细信息
kubectl get namespaces
//查看所有名称空间
kubectl -n kube-system get pods
//查看指定的命名空间的所有pod(pods)
create
kubectl create namespace work //创建命名空间资源对象
run
kubectl -n work run myhttp --image=myos:httpd
#在work命名空间创建myhttp的pod资源对象
describe
kubectl describe pod myweb //查看资源对象的属性信息 是default命名空间的myweb如果要看work命名空间下的myhttp,则需要kubectl -n work describe pod myhttp
# 可以查看到myweb资源分配给了哪位计算节点
logs
kubectl logs myweb //查看myweb日志
exec
kubectl exec myweb -- ls //在myweb执行命令ls
kubectl exec -it myweb -- /bin/bash //以交互式进入bash
cp
kubectl cp myweb:/etc/yum.repos.d /root/aaa
delete
kubectl delete pods myweb
kubectl -n work delete pods --all
kubectl delete namespaces work
资源对象文件入门
简单的资源对象文件例如:
cat myweb.yaml
---
kind: Pod //资源类型pod
apiVersion: v1 //k8s api版本v1,是当前稳定的版本
metadata:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。