在Linux中进行K8s部署

准备工作

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

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

命令:docker version

docker run hello-world

若结果显示“Hello from Docker!”,则说明Docker Engine-Community正确安装。

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

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...