K8s使用手册—— 软件配置

Posted Austin_zhai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s使用手册—— 软件配置相关的知识,希望对你有一定的参考价值。

@TOC

目的

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

 

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

 

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

 
 

接上回

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

 
 

基础配置

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

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

cat /proc/sys/net/bridge/bridge-nf-call-iptables

 

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

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

 

修改/etc/下的hosts文件,添加你的节点信息,方便查看域名映射关系
具体的IP与域名根据各自公司的业务需求进行自定义

 

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

hostnamectl set-hostname 要修改的主机名


 

节点设置

 

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

kubeadm config print init-defaults > init-config.yaml

 

如果报错,则将之前的init-config.yaml内的镜像仓库地址(imageRepository)换成其他国内的仓库地址。这里还是比
较推荐阿里云的仓库地址:registry.aliyuncs.com/google_containers

 

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

 

修改为阿里云的仓库地址

 

另外修改本机IP地址与本机节点名称
advertiseAddress修改为你的内网IP地址
name修改为你的节点名称(名称根据你的业务需要修改)

 

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

kubeadm config images pull --config=init-config.yaml

 
 

节点部署

 

使用kubeadm init进行部署(master节点)
命令比较长使用换行方式显示

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初始化的参数比较多,有兴趣的可以再扩展一下,以便适应各类测试环境搭建的需求

--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

mkdir -p $HOME/.kube

 

复制配置文件至该目录下

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

 

修改文件路径所属权限

chown $(id -u):$(id -g) $HOME/.kube/config

 

查看node节点信息

kubectl get nodes

 

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

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

 

安装flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

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

添加节点至集群
命令同样可以在初始化完成后的界面中找到

kubeadm join 172.20.30.112:6443 --token mi7wl8.t9tppdipry6tmrl4 \\
    --discovery-token-ca-cert-hash sha256:2ed5b46fac3d512fdd258ffd58a0000cea15370f33204ca44c967d063cf42ffb 

 

在集群中创建一个pod

kubectl run nginx --image=nginx

 

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

kubectl get pods -n default


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

以上是关于K8s使用手册—— 软件配置的主要内容,如果未能解决你的问题,请参考以下文章

k8s集群安装部署实战详细手册

k8s集群安装部署实战详细手册

k8s dashboard安装部署实战详细手册

k8s dashboard安装部署实战详细手册

kubernetes -- k8s安装及配置全流程

kubekey安装k8s集群详细手册