准备工作

部署K8s集群对服务器的要求:

1)3台以上装有CentOS7.7版本以上的64位系统的服务器;

2)每台服务器的硬件配置都是内存最少2G,CPU至少双核,硬盘至少30GB;

3)集群中所有服务器之间网络互通;

4)可以访问外网,需要拉取镜像;

5)禁止swap分区。

配置环境

第一步,关闭防火墙和selinux。

命令:systemctl stop firewalld

systemctl disable firewalld

# 永久关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config

# 临时禁用selinux

setenforce 0

第二步,关闭swap分区。

# 临时关闭

命令:swapoff -a

# 永久关闭

命令:sed  -ri  's/.*swap.*/#&/'  /etc/fstab

第三步,添加主机名与IP对应关系(三台主机都执行)。

命令:echo '''x.x.x.108 k8s-master-108 y.y.y.107 k8s-node-107 z.z.z.105 k8s-node-105''' >> /etc/hosts

第四步,各自修改主机名。

命令:hostnamectl set-hostname k8s-master-108

hostnamectl set-hostname k8s-node-107

hostnamectl set-hostname k8s-node-105

第五步,设置网桥参数(三台主机都执行)。

以下net.ipv4.ip_forward如存在=0,修改为1即可

命令:cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

sysctl --system

安装docker18.09.9(三台服务器都一样)

第一步,卸载旧版本docker。

若系统中已安装旧版本docker,则需要卸载旧版本docker以及与旧版本docker相关的依赖项。

命令:yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

第二步,安装gcc依赖。

命令:yum -y install gcc gcc-c++

第三步,使用Docker仓库进行安装。

在新主机上首次安装Docker Engine-Community之前,需要设置Docker仓库。之后,可以从仓库安装和更新Docker。

# 设置仓库,安装所需的软件包。

命令:yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置稳定的仓库,使用官方源地址(比较慢)

命令: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

# 可以选择国内的一些源地址,如清华大学源

命令:yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

第四步,安装Docker Engine-Community。

# 安装特定版本的Docker Engine-Community

# 列出存储库中可用的版本并按版本号从高到低进行排序

命令:yum list docker-ce --showduplicates | sort -r

# 通过其完整的软件包名称安装特定版本,如docker-ce-18.09.9。

命令:yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io

第五步,启动Docker。

命令:systemctl enable docker

systemctl start docker

systemctl restart docker

若结果显示“Job for docker.service failed because the control process exited with error code.See "systemctl status docker.service" and "journalctl -xe" for details.”,则运行如下命令:

systemctl daemon-reload

systemctl restart docker.service

第六步,验证docker Engine-Community是否正确安装。

命令:docker version

docker run hello-world

若结果显示“Unable to find image 'hello-world:latest' locally”,则需要按照下面的步骤来解决:

1)创建文件daemon.json文件。

命令:touch /etc/docker/daemon.json

2)配置文件/etc/docker/daemon.json,添加阿里云镜像。

 

{
"registry-mirrors": ["https://ufxq8t1x.mirror.aliyuncs.com"]
}

3)重启docker服务。

命令:systemctl restart docker

systemctl status docker

再次验证:docker run hello-world

若结果显示“Hello from docker!”,则说明docker安装成功。

部署Kubernetes Master

第一步,添加k8s阿里云YUM软件源。

命令:cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[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

第二步,安装kubeadmkubelet和kubectl

命令:yum makecache fast

yum -y install kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0

systemctl start kubelet

systemctl enable kubelet

第三步,初始化k8s。

命令:kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.0 --apiserver-advertise-address x.x.x.108 --token-ttl 0

若结果显示“Your Kubernetes control-plane has initialized successfully!”,则说明安装成功,然后根据提示,分别执行下面的命令:

mkdir -p $HOME/.kube

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

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

第四步,记住node加入集群的命令。

执行“kubeadm init”成功后,会返回node节点加入集群的命令,后面要在node节点上执行,需要保存下来。

# 获取node加入集群的命令

命令:kubeadm token create --print-join-command

# 查看此时master的状态

命令:kubectl get nodes

若此时master处于NotReady状态,则暂时不用管。

部署Kubernetes Node

第一步,添加k8s阿里云YUM软件源。

命令:cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[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

第二步,安装kubeadmkubelet和kubectl

命令:yum makecache fast

yum -y install kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0

systemctl start kubelet

systemctl enable kubelet

第三步,加入集群。

# 可以登录master节点,获取node加入集群的命令

命令:kubeadm token create --print-join-command

# 可以登录node节点,加入集群

命令:kubeadm join x.x.x.108:6443 --token zerect.sbegb9a9773ak4t1     --discovery-token-ca-cert-hash sha256:39996173db4cb75ecae91263b782de50ba77b7ed866313f2ff9ed03e488088d8

# 加入集群成功后,可以登录master节点,查看是否有加入的节点并查看此时master的状态。

命令:kubectl get nodes

部署容器网络插件(在master上安装)

第一步,登录master节点,新建fannel配置文件。

在/root文件夹中新建kube-flannel.yml文件,然后登录网址:xw_yaml/kube-flannel.yml at main · xuwei777/xw_yaml · GitHub,复制粘贴代码到新建的kube-flannel.yml文件中。

第二步,安装fannel

命令:kubectl apply -f kube-flannel.yml

kubectl get pods -n kube-system

第三步,查看master的状态。

命令:kubectl get nodes

若此时master处于Ready状态,则说明fannel安装成功。

k8s常用命令

# 查看pod,service,endpoints,secret等的状态

# 查看详细信息可以加上-o wide

# 其他namespace的指定为-n namespace名

命令:kubectl get 组件名

kubectl get -o wide 组件名

kubectl get -n namespace名

# 创建和变更一个yaml文件内资源,也可以是目录,目录内包含一组yaml文件

命令:kubectl apply -f xxx.yaml

# 删除一个yaml文件内资源,也可以是目录,目录内包含一组yaml文件

命令:kubectl delete -f xxx.yaml

# 查看资源状态

命令:kubectl get pod

kubectl describe pod pod名

# 查看pod日志,用于pod状态未就绪的故障排查

命令:kubectl get pod

kubectl logs pod名

# 查看node节点或者是pod资源(cpu,内存资源)使用情况

命令:kubectl top 组件名

# 进入pod内部

命令:kubectl get pod

kubectl exec -ti pod名 /bin/bash

既然看到这里了,就向大家打个广告。如果想要了解更多关于运维和mysql数据库的知识,可以关注我的微信公众号:人文历史与科学技术,下面是二维码,谢谢大家! 

Logo

更多推荐