K8s使用手册(2)—— 软件配置

2022-08-13 21:30:06 浏览数 (1)

目的

  “K8s在容器编排领域已经形成统治地位,不管是开发、运维和测试,掌握 kubernetes 都变得非常有必要。” —— 相信大家应该在各类技术论坛与博客中早已看见过如上的一段话。的确在敏捷开发占主导模式的现今,无论是项目任何阶段都随处可见K8s的身影,基础扩展要求、故障转移、部署模式等,以上这些基于K8s的特性与强大功能,都可以随时随地实现与落地。

  对于测试的同学来说,测试环境的集中化、自动化管理,这些也可以依托于K8s的功能来实现。日常工作中的测试环境集群也经常会有按需调整(加入新的服务器或销毁资源)的情况,K8s可以满足我们相关的大部分工作需求。另一方面,持续集成领域中,K8s也是不可或缺的重要角色之一,有了他就可以使我们在平时的测试活动前期更加快速有效的自动部署测试环境。

  所以作为有一定工作经验的测试同学来说,K8s绝对是无法绕过的一项重要技能。

接上回

上一篇我们已经基本将K8s的安装操作给完成了,那么接下来就针对K8s的使用进行基础的配置和其他相关操作的说明。

基础配置

为了实现K8s的网络集群,我们需要使用Linux中的网桥功能

检查bridge-nf-call-iptables文件内容是否为1,如不是则修改内容为1

代码语言:shell复制
cat /proc/sys/net/bridge/bridge-nf-call-iptables

在/etc/sysctl.d/下创建k8s.conf文件,并写入以下内容

代码语言:shell复制
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

修改/etc/下的hosts文件,添加你的节点信息,方便查看域名映射关系

具体的IP与域名根据各自公司的业务需求进行自定义

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

修改本机主机名

此处也是一样,根据hosts文件中设置的对应IP与域名设置对应的主机名,可以更好的快速定位到具体节点

代码语言:shell复制
hostnamectl set-hostname 要修改的主机名
在这里插入图片描述在这里插入图片描述

节点设置

使用重定向将K8s默认配置拉取至yaml文件

代码语言:shell复制
kubeadm config print init-defaults > init-config.yaml

如果报错,则将之前的init-config.yaml内的镜像仓库地址(imageRepository)换成其他国内的仓库地址。这里还是比

较推荐阿里云的仓库地址:registry.aliyuncs.com/google_containers

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

编辑yaml文件,找到对应的配置项

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

修改为阿里云的仓库地址

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

另外修改本机IP地址与本机节点名称

advertiseAddress修改为你的内网IP地址

name修改为你的节点名称(名称根据你的业务需要修改)

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

设置完成后,进行相关镜像拉取

代码语言:shell复制
kubeadm config images pull --config=init-config.yaml
在这里插入图片描述在这里插入图片描述

节点部署

使用kubeadm init进行部署(master节点)

命令比较长使用换行方式显示

代码语言:shell复制
kubeadm init 
--apiserver-advertise-address=172.20.30.112 
--image-repository registry.aliyuncs.com/google_containers 
--kubernetes-version v1.23.0 
--service-cidr=172.20.30.1/24 
--pod-network-cidr=172.20.30.1/24

kubeadm初始化的参数比较多,有兴趣的可以再扩展一下,以便适应各类测试环境搭建的需求

代码语言:txt复制
--apiserver-advertise-address string   设置 apiserver 绑定的 IP.
--apiserver-bind-port int32            设置apiserver 监听的端口. (默认 6443)
--apiserver-cert-extra-sans strings    api证书中指定额外的Subject Alternative Names (SANs) 可以是IP 也可以是DNS名称。 证书是和SAN绑定的。
--cert-dir string                      证书存放的目录 (默认 "/etc/kubernetes/pki")
--certificate-key string               kubeadm-cert secret 中 用于加密 control-plane 证书的key
--config string                        kubeadm 配置文件的路径.
--cri-socket string                    CRI socket 文件路径,如果为空 kubeadm 将自动发现相关的socket文件; 只有当机器中存在多个 CRI  socket 或者 存在非标准 CRI socket 时才指定.
--dry-run                              测试,并不真正执行;输出运行后的结果.
--feature-gates string                 指定启用哪些额外的feature 使用 key=value 对的形式。
--help  -h                             帮助文档
--ignore-preflight-errors strings      忽略前置检查错误,被忽略的错误将被显示为警告. 例子: 'IsPrivilegedUser,Swap'. Value 'all' ignores errors from all checks.
--image-repository string              选择拉取 control plane images 的镜像repo (default "k8s.gcr.io")
--kubernetes-version string            选择K8S版本. (default "stable-1")
--node-name string                     指定node的名称,默认使用 node 的 hostname.
--pod-network-cidr string              指定 pod 的网络, control plane 会自动将 网络发布到其他节点的node,让其上启动的容器使用此网络
--service-cidr string                  指定service 的IP 范围. (default "10.96.0.0/12")
--service-dns-domain string            指定 service 的 dns 后缀, e.g. "myorg.internal". (default "cluster.local")
--skip-certificate-key-print           不打印 control-plane 用于加密证书的key.
--skip-phases strings                  跳过指定的阶段(phase)
--skip-token-print                     不打印 kubeadm init 生成的 default bootstrap token 
--token string                         指定 node 和control plane 之间,简历双向认证的token ,格式为 [a-z0-9]{6}.[a-z0-9]{16} - e.g. abcdef.0123456789abcdef
--token-ttl duration                   token 自动删除的时间间隔。 (e.g. 1s, 2m, 3h). 如果设置为 '0', token 永不过期 (default 24h0m0s)
--upload-certs                         上传 control-plane 证书到 kubeadm-certs Secret.

初始化成功后应显示如下提示

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

开始使用集群前,需要在服务器中操作以下这些命令

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

在用户的主目录下创建隐藏文件夹kube

代码语言:shell复制
mkdir -p $HOME/.kube

复制配置文件至该目录下

代码语言:shell复制
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

修改文件路径所属权限

代码语言:shell复制
chown $(id -u):$(id -g) $HOME/.kube/config

查看node节点信息

代码语言:shell复制
kubectl get nodes

使用kubeadm token list命令进行token的查看

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

这里需要注意:token的有效期是24小时,如果需要创建永久的可以使用kubeadm token create --ttl 0命令

安装flannel

代码语言:shell复制
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

如果命令报错的话,尝试ping一下raw.githubusercontent.com,查看IP是否为185.199.109.133,如果不是的话可以修改hosts文件进行域名绑定。

添加节点至集群

命令同样可以在初始化完成后的界面中找到

在这里插入图片描述在这里插入图片描述
代码语言:shell复制
kubeadm join 172.20.30.112:6443 --token mi7wl8.t9tppdipry6tmrl4 
	--discovery-token-ca-cert-hash sha256:2ed5b46fac3d512fdd258ffd58a0000cea15370f33204ca44c967d063cf42ffb 

在集群中创建一个pod

代码语言:shell复制
kubectl run nginx --image=nginx

创建后使用命令进行pod查看

代码语言:shell复制
kubectl get pods -n default
在这里插入图片描述在这里插入图片描述

至此K8s基础集群就配置成功了,其他节点的配置方法类似。

0 人点赞