在Linux环境下安装Kubernetes

  1. 环境准备

1.1关闭防火墙,iptables和selinux

#查看防火墙状态(两种)

firewall-cmd --state
service firewalld status

#关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

#关闭iptables服务

systemctl stop iptables
systemctl disbale iptables

# 关闭selinux

setenforce 0

1.2临时关闭swap分区

swapoff -a

1.3添加主机名与IP对应关系(三台主机都要设置)

vi /etc/hosts

主机ip地址 自己添加的主机名

1.4时间同步

1.4.1安装chronyd服务

yum -y install chrony

1.4.2启动chronyd服务

systemctl start chronyd

1.4.3设置chronyd服务开机自启

systemctl enable chronyd

1.4.4验证时间

1.5修改linux的内核参数

1.5.1修改linux的内核参数,添加网桥过滤和地址转发功能

#编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置

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

1.5.2重新加载配置

sysctl -p

1.5.3加载网桥过滤模块

modprobe br_netfilter

1.5.4查看网桥过滤模块是否加载成功

lsmod | grep br_netfilter

1.6配置ipvs功能

#在kuberbetes中ipvs代理的性能要高于iptables,使用ipvs需要手动载入ipvs模块

1.6.1安装ipset和ipvsadm

yum install ipset ipvsadmin -y

1.6.2添加需要加载的模块写入脚本文件

cat < /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

1.6.3为脚本文件添加执行权限

chmod +x /etc/sysconfig/modules/ipvs.modules

1.6.4执行脚本文件

/bin/bash /etc/sysconfig/modules/ipvs.modules

1.6.5查看对应的模块是否加载成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4
在Linux环境下安装Kubernetes_第1张图片

1.7重启服务器

reboot

#做完这些后需要进行docker安装具体安装步骤参考这个博客https://blog.csdn.net/qq_61462100/article/details/129589757

2.安装Kubernetes组件

2.1配置镜像源

#由于Kubernetes的镜像源在国外,速度比较慢,切换成国内的镜像源

#添加kubernetes yum源

cat > /etc/yum.repos.d/kubernetes.repo <

2.2安装kubeadm,kubelet和kubectl

yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y

2.3配置kubelet的cgroup

#编辑/etc/sysconfig/kubelet,添加下面的配置

KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

2.4设置kubelet开机自启

systemctl enable kubelet

3.准备集群镜像

3.1查看依赖哪些镜像

kubeadm config images list
在Linux环境下安装Kubernetes_第2张图片

3.2下载镜像

#由于网络原因无法连接kubernetes仓库我们需要使用国内镜像先下载下来

使用docker命令先搜索下

docker search kube-apiserver
在Linux环境下安装Kubernetes_第3张图片

发现有我们需要的镜像并进行拉取

docker pull aiotceo/kube-apiserver:v1.17.4
docker pull aiotceo/kube-controller-manager:v1.17.4
docker pull aiotceo/kube-scheduler:v1.17.4
docker pull aiotceo/kube-proxy:v1.17.4
docker pull aiotceo/pause:3.1
docker pull aiotceo/etcd:3.4.3-0
docker pull aiotceo/coredns:1.6.5

在拉取镜像的时候可能会有某些镜像拉取失败,此时可以用下面这个镜像名

registry.cn-hangzhou.aliyuncs.com/google_containers/
用以取代上面的aiotceo/

查看镜像

docker images
在Linux环境下安装Kubernetes_第4张图片

3.3tag一下镜像

为了让kubeadm程序能找到k8s.gcr.io下面的镜像,需要把镜像名称重新打一下tag

docker tag aiotceo/kube-apiserver:v1.17.4 k8s.gcr.io/kube-apiserver:v1.17.4
docker tag aiotceo/kube-controller-manager:v1.17.4 k8s.gcr.io/kube-controller-manager:v1.17.4
docker tag aiotceo/kube-scheduler:v1.17.4 k8s.gcr.io/kube-scheduler:v1.17.4
docker tag aiotceo/kube-proxy:v1.17.4 k8s.gcr.io/kube-proxy:v1.17.4
docker tag aiotceo/pause:3.1 k8s.gcr.io/pause:3.1
docker tag aiotceo/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag aiotceo/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5

3.4拉取flannel和kubernetes-dashboard-amd64

docker pull jmgao1983/flannel:v0.11.0-amd64
docker pull loveone/kubernetes-dashboard-amd64:v1.10.1

4.集群初始化

4.1对集群初始化,将node节点加入到集群中

4.1.1创建集群

kubeadm init \
--kubernetes-version=v1.17.4 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=192.168.174.10

需要一点时间,提示successfully即为成功

查看节点信息

kubectl get nodes

###集群初始化中遇到的问题

解决方案:

1.提升虚拟机的cpu资源

2.忽视这条告警错误,加上 --ignore-preflight-errors=all 参数

解决方案:关闭swap分区

解决方案:提高kubeadm版本

4.1.2创建必要文件

[root@hadoop1 ~]# mkdir -p $HOME/.kube
[root@hadoop1 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@hadoop1 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

将两个子环境添加到集群中

kubeadm join 192.168.174.10:6443 --token zo5l1r.4cw0a9qx2iamo0e5 \
    --discovery-token-ca-cert-hash sha256:3bbbdc3085f93091d689e9c7a3696bfd6e04d22f4fb71c3e3bfe135f6539552c

此时通过kubectl get nodes查看

在Linux环境下安装Kubernetes_第5张图片

4.2安装网络插件

4.2.1获取fannel的配置文件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4.2.2使用配置文件启动fannel

kubectl apply -f kube-flannel.yml

4.2.3稍等片刻,再次查看集群节点状态

在Linux环境下安装Kubernetes_第6张图片

至此,kubernetes集群环境搭建完成

5.服务部署

#部署nginx

kubectl create deployment nginx --image=nginx:1.14-alpine

#暴露端口

kubectl expose deployment nginx --port=80 --type=NodePort

#查看服务状态

kubectl get pods,svc
在Linux环境下安装Kubernetes_第7张图片

#在电脑上访问nginx服务

在Linux环境下安装Kubernetes_第8张图片

你可能感兴趣的:(linux,运维,服务器,kubernetes,docker)