centos搭建部署 k8s1.18

准备三台机器 一个master节点两个node节点

这里安装了三台虚拟机   虚拟机内存最低2g cpu最低双核

 lsb_release  -a

LSB Version:	:core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.3.1611 (Core) 
Release:	7.3.1611
Codename:	Core

设置主机名映射(三个主机)

vim /etc/hosts

  • master 192.168.1.100
  • node01 192.168.1.101
  • node02 192.168.1.102

关闭防火墙和selinux(三个主机)

  • systemctl stop firewalld    关闭防火墙

  • systemctl disable firewalld   设置开机禁用防火墙

  • setenforce 0    临时关闭selinux模式

  • sed -ri ‘s/(^SELINUX=).*/\1disabled/‘ /etc/selinux/config  永久关闭selinux模式

关闭swap分许(三个主机)

  • 临时关闭:swapoff -a
  • 永久关闭:注释掉/etc/fstab文件中的swap行

将桥接的 IPv4 流量传递到 iptables 的链:

cat > /etc/sysctl.d/k8s.conf << EOF

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

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

EOF

sysctl --system

资源http://www.jeepyurongfu.net/blog/64.html

设置docker源(三个主机)

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 安装Docker CE(三个主机)

yum list docker-ce --showduplicates | sort -r

 

安装docker(三个主机)

yum install docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io -y

查看docker版本(三个主机)

docker --version

查看docker的Cgroup(后面会用到)

docker info |grep Cgroup
Cgroup Driver: cgroupfs

启动docker并设置开机自启动(三个主机)

systemctl start docker.service
systemctl enable docker.service

设置k8s的源(三个主机)

[root@localhost yum.repos.d]# vim /etc/yum.repos.d/kubernetes.repo


[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
                                                                                                                                  

安装kubeadm, kubelet and kubectl(三个主机)

yum install kubelet kubeadm kubectl –y

设置Cgroup drivers和交换分区(三个主机) k8s推荐使用systemd

vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
说明:
--fail-swap-on:关闭交换分区,kubernetes不允许开启交换分区

 

vim /var/lib/kubelet/kubeadm-flags.env

KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.2"
#--cgroup-driver:指定Cgroup drivers用谁 k8s推荐使用systemd

修改docker的配置

vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"]
,"insecure-registries":["https://hub.kumo.com"]
}

//保存上面信息 
然后执行
#重启docker服务
systemctl daemon-reload
systemctl  restart docker
查看docker Cgroup
docker info|grep Cgroup 
Cgroup Driver: systemd  //此时docker的cgroup是systemd

 

设置kubectl开机自启动(三个主机)

  • systemctl enable kubelet

使用kubernetes创建单个控制平面集群(master)

kubeadm init --kubernetes-version=1.18.2     --image-repository registry.aliyuncs.com/google_containers  --service-cidr=10.10.0.0/16 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.136.100
  • --kubernetes-version:为控制平面选择特定的Kubernetes版本。
  • --image-repository :指定镜像部署的地址,原地址https://k8s.gcr.io不可用
  • --pod-network-cidr:设置 pod ip 的网段 ,网段之所以是 10.244.0.0/16,是因为后面安装 flannel 网络插件时,yaml 文件里面的 ip 段也是这个,两个保持一致,不然可能会使得 Node 间 Cluster IP 不通。这个参数必须得指定,如果这里不设置的话后面安装 flannel 网络插件时会报如下错误
E0317 17:02:15.077598       1 main.go:289] Error registering network: failed to acquire lease: node "k8s-master" pod cidr not assigned
  • kube-flannel.yml文件中的ip段 两者保持一致(后面会提到)
  • --service-cidr:server的网络地址
  • --apiserver-advertise-address API server 用来告知集群中其它成员的地址,这个参数也必须得设置,否则 api-server 容器启动不起来,该参数的值为 master 节点所在的本地 ip 地址。

结果输出一段日志保存好 后面需要用到

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.136.100:6443 --token ga73u1.qw4c525xniinghrq \
    --discovery-token-ca-cert-hash sha256:286b3d4b64bb3b535e9fea7efb95c4a0b1c6b563d55be3e40f1b51a8239e3ff6 

初始化失败:

如果初始化失败,可执行kubeadm reset后重新初始化

[root@master01 ~]# kubeadm reset
[root@master01 ~]# rm -rf $HOME/.kube/config

根据提示创建kubectl(此文件不仅要在master机器上操作 还需要将master上生成的此文件复制到各个node节点的$HOME/.kube目录下)

[root@master01 ~]#  mkdir -p $HOME/.kube
[root@master01 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config



scp  /etc/kubernetes/admin.conf root@192.168.136.101:/app

将nodes主机加入kubernetes集群(node节点)

  • kubeadm join 192.168.136.100:6443 --token ga73u1.qw4c525xniinghrq \
        --discovery-token-ca-cert-hash sha256:286b3d4b64bb3b535e9fea7efb95c4a0b1c6b563d55be3e40f1b51a8239e3ff6 

安装flannel网络(三个主机)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

注意此文件需要翻墙 你可以先获得此yml文件然后上传到虚拟机去再去执行此文件我这里之前已经下载了文件直接执行此文件

查看pod的状态(三个主机)

kubectl get pods --all-namespaces

图中显示flannel 状态是镜像下载失败可能是网络的问题所以这里我 去其他集群中直接导出一份镜像再导入到此linux

通过docker save 和docker load

  • docker load -i flannel.tar

再次执行以下命令
kubectl delete -f kube-flannel.yml 
kubectl apply -f kube-flannel.yml 
kubectl get pods --all-namespaces

flannel启动正常

验证

查看kubernetes启动的docker容器

  •  kubectl get -A pods -o wide

查看kubernetes集群节点

  • kubectl get nodes

至此k8s集群搭建完毕

可能出现的错误以及解决办法

  1. The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get http://localhost:10248/healthz: dial tcp [::1]:10248: connect: connection refused.

tail -f /var/log/messages  执行此命令查看日志查找错误

有时报错关于systemd的错误可能原因是systemd需要升级执行以下命令即可

  • yum update systemd
     

后面有时间再去补充仪表盘的搭建...

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在CentOS 7上部署KubernetesK8S),你可以按照以下步骤进行操作: 1. 首先,升级你的CentOS 7系统的内核。你可以参考引用中的链接,了解如何升级内核。 2. 接下来,你需要安装Docker。你可以使用以下命令在CentOS 7上安装Docker: ``` yum install docker -y systemctl start docker systemctl enable docker ``` 3. 安装Kubernetes。你可以使用以下命令在CentOS 7上安装Kubernetes: ``` curl https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg -o /etc/pki/rpm-gpg/RPM-GPG-KEY-kubernetes yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl enable kubelet systemctl start kubelet ``` 4. 初始化Kubernetes Master节点。你可以使用以下命令来初始化Kubernetes Master节点: ``` kubeadm init --apiserver-advertise-address=<master节点的IP> ``` 5. 在初始化完成后,会输出一个加入集群的命令,你可以将该命令保存下来,以便后续加入Worker节点。 6. 安装网络插件。在Kubernetes集群中,你需要安装网络插件来实现Pod之间的通信。常用的网络插件有Flannel、Calico等,你可以根据自己的需求选择合适的插件进行安装。 7. 加入Worker节点。在Worker节点上执行1-7步骤,然后使用在第4步中输出的加入集群的命令将Worker节点加入到Kubernetes集群中。 请注意,这只是一个基本的部署过程,具体的操作步骤可能因为不同的环境和需求而有所差异。你可以参考引用和引用中的链接,了解更详细的部署步骤和脚本示例。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值