kubernetes部署

1 环境规划

1.1 服务规划

主机IP配置角色
k8s-master192.168.0.1274C8Gk8s集群master节点
k8s-node1192.168.0.654C8Gk8s集群worker节点
k8s-node2192.168.0.1284C8Gk8s集群worker节点

1.2 版本说明

资源版本信息
服务器操作系统CentOS Linux release 7.9.2009 (Core)
服务器内核3.10.0-1160.59.1.el7.x86_64
kubernetes版本v1.19.6
docker版本19.03.15

2 kubernetes部署

2.1 服务器初始化

2.1.1 关闭防火墙、selinux、swap

-- 关闭防火墙自启
systemctl stop firewalld 
systemctl disable firewalld 

-- 关闭selinux
setenforce 0 sed -i 's/enforcing/disabled/' /etc/selinux/config

-- 关闭swap
swapoff -a 
sed -ri 's/.swap./#&/' /etc/fstab

2.1.2 修改主机名

-- 分别在各个服务上按照服务器规划设置主机名
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

-- 配置host文件
cat >> /etc/hosts << EOF
192.168.0.127 k8s-master
192.168.0.65 k8s-node1
192.168.0.128 k8s-node2
EOF

2.2 k8s环境初始化

以下初始化环境需要在集群各个节点执行。

2.2.1 安装docker

在v1.20之前,kubernetes依赖docker的容器运行时,来负责进行容器镜像拉取,所以需要提前安装对应支持的docker版本。在v1.20之后,kubernetes为了解决docker整个运行容器链路的冗长性,选择弃用了docker,转而采用了 Container Runtime Interface (CRI) 来替代容器的运行时,使用containerd 、CRI-O 来兼容对容器的运行时,极大的简化了容器运行时的链路。

-- 这里kubernetes是1.19,默认的容器仍然是docker
-- 安装docker环境的依赖包
# yum install -y yum-utils device-mapper-persistent-data lvm2 containerd

-- 设置docker源
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
或者
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

-- 安装docker19.03.15
# yum list docker-ce --showduplicates | sort -r|grep 19.03
# yum install -y docker-ce-19.03.15-3.el7 docker-ce-cli-19.03.15-3.el7

-- 查看安装的版本
# docker -v
Docker version 19.03.15, build 99e3ed8919

-- 修改docker的从group driver
1. 启动docker
# systemctl start docker

2. 查看docker driver
# docker info|grep Cgroup
Cgroup Driver: cgroupfs

3. 修改docker driver
# vim /etc/docker/daemon.json  # 修改或创建
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

-- 设置docker开机自启
systemctl restart docker
systemctl enable docker
systemctl status docker

2.2.2 安装kubeadm、kubelet、kubectl

-- 设置k8s的yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

-- 安装kubernetes1.19.6
yum list -y kubeadm --showduplicates|grep 1.19

yum install -y kubeadm-1.19.6-0 kubectl-1.19.6-0 kubelet-1.19.6-0

-- 查看版本
kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.6", GitCommit:"fbf646b339dc52336b55d8ec85c181981b86331a", GitTreeState:"clean", BuildDate:"2020-12-18T12:07:25Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

2.3 部署master节点

以下所有步骤均是在master节点操作。

2.3.1执行kubeadm init进行初始化

# kubeadm init --kubernetes-version=v1.19.6 \
--apiserver-advertise-address=192.168.0.127 \              # apiserver地址,即master节点ip
--service-cidr=10.1.0.0/16 \                               # service IP 网段
--pod-network-cidr=10.244.0.0/16 \                         # pod IP 网段
--image-repository=registry.aliyuncs.com/google_containers

在初始化这一流程中,主要进行了一下工作:

  • [preflight]:kubeadm 执行初始化前的检查。
  • [certificates]:生成相关的各种token和证书
  • [kubelet-start]:生成kubelet的配置文件"/var/lib/kubelet/config.yaml"
  • [kubeconfig]:生成 KubeConfig 文件,kubelet 需要这个文件与 Master 通信
  • [control-plane]:安装 Master 组件,会从指定的 Registry 下载组件的 Docker 镜像
  • [bootstraptoken]:生成token记录下来,后边使用kubeadm join往集群中添加节点时会用到
  • [addons]:安装附加组件 kube-proxy 和 kube-dns。 Kubernetes Master 初始化成功,提示如何配置常规用户使用kubectl访问集群。 提示如何安装 Pod 网络。 提示如何注册其他节点到 Cluster

2.3.2 配置kubectl

-- 新建kubect的配置目录
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

-- 启用 kubectl 命令自动补全功能
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

-- 设置kubelet自启
systemctl enable kubelet 
systemctl status kubelet

此时如果我们通过kubectl get all -n kube-system ,可以发现coredns相关的pod处于pending状态,这是由于我们的集群master节点还未安装相关的网络插件。

2.3.3 安装网络插件

-- 安装flannel网络插件
# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# kubectl apply -f kube-flannel.yml

如果无法访问,可以直接下载代码仓库https://github.com/coreos/flannel,将kube-flannel.yml上传到k8s-master节点需要能访问quay.io,不然就需要换其他的源,然后执行 kubectl apply

2.4 部署worker节点

2.4.1 worker节点加入

-- 在集群master节点查看集群节点添加命令
# kubeadm token create --print-join-command
kubeadm join 192.168.0.127:6443 --token 2yus3o.5s5b8bb466zmkbza     --discovery-token-ca-cert-hash sha256:856f54dff402531039bd138523262a45ff20d7a668ef01121b90bb7e83f59d1b 

-- 在worker节点执行集群节点加入命令
# kubeadm join 192.168.0.127:6443 --token 2yus3o.5s5b8bb466zmkbza     --discovery-token-ca-cert-hash sha256:856f54dff402531039bd138523262a45ff20d7a668ef01121b90bb7e83f59d1b 


-- 查看集群状态
# kubectl get nodes 
NAME         STATUS   ROLES    AGE   VERSION
k8s-master   Ready    master   22h   v1.19.6
k8s-node1    Ready    <none>   21h   v1.19.6
k8s-node2    Ready    <none>   21h   v1.19.6

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值