首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从0到1搭建k8s(一)——环境搭建

从0到1搭建k8s(一)——环境搭建

原创
作者头像
点点寒彬
发布2021-01-15 16:39:12
9380
发布2021-01-15 16:39:12
举报
文章被收录于专栏:用Python做测试用Python做测试

背景

这一系列文章是学习K8S过程的笔记,使用的是kubeadm来部署。 参考https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

安装顺序

  1. 安装docker
  2. 配置yum
  3. 设置linux配置
  4. 安装kubeadm,kubelet,kubectl
  5. 初始化&&启动kubelet
docker -v
Docker version 19.03.1, build 74b1e89

 kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.1", GitCommit:"c4d752765b3bbac2237bf87cf0b1c2e307844666", GitTreeState:"clean", BuildDate:"2020-12-18T12:07:13Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.1", GitCommit:"c4d752765b3bbac2237bf87cf0b1c2e307844666", GitTreeState:"clean", BuildDate:"2020-12-18T12:09:25Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.1", GitCommit:"c4d752765b3bbac2237bf87cf0b1c2e307844666", GitTreeState:"clean", BuildDate:"2020-12-18T12:00:47Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
  • 安装docker

这个不单独说明,网上的资料应该非常多。

  • 配置yum源&安装必要组件

copy官方说明。

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

最后一句systemctl enable --now kubelet如果执行失败。。就多执行几次。实际发现执行几次之后就没报错了。

最后还需要修改dockercgroup方式为systemd.

操作方式为:修改或创建/etc/docker/daemon.json. 加入:

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
  • 初始化&&启动kubelet

执行kubeadm init就可以了。

执行完毕之后,注意记录一下日志信息中的token,因为后续的操作有可能会用到这个

添加节点

再找一台机器,安装kubeletkubeadm。然后启动kubelet

编写join-config.yaml

apiVersion: kubeadm.k8s.io/v1beta2
kind: JoinConfiguration
discovery:
  bootstrapToken:
    apiServerEndpoint: {ip}:{port}
    token: {上面初始化的token}
    unsafeSkipCAVerification: true
  tlsBootstrapToken: {上面初始化的token}

执行kubeadm join就可以本Node加入集群.

添加成功后,在master机器上执行kubectl get nodes。就可以看到输出。

单节点运行

默认情况下,k8smaster节点默认是不允许部署服务的,但是有时候我们机器不够,想要在单节点下运行,也是可以的。

执行kubectl taint node <nodename> node-role.kubernetes.io/master-

其中nodename可以使用kubectl get nodes来获取名字。

执行完之后执行 kubectl get nodes -o wide

有这个输出就表示设置成功了

[root@centos ~]# kubectl get nodes -o wide
NAME                STATUS   ROLES                  AGE     VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                     KERNEL-VERSION                      CONTAINER-RUNTIME
-centos   Ready    control-plane,master   3h35m   v1.20.1   {ip}   <none>        linux    linux   docker://19.3.1

以上,就是一个搭建的流程了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 安装顺序
  • 添加节点
  • 单节点运行
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档