如何在Centos 7Kubeadm中安装kubernetes
admin
2023-02-27 07:21:56
0次

1、Kuberbetes 平台环境规划

机器规划:

主机名IP地址
Master0110.0.0.31
Node0110.0.0.33
Node0210.0.0.34

Master节点:etcd、api-server、controlor-manager、scheduler
Node节点:kube-proxy、docker

2、系统初始化

所有节点操作

1.设置系统主机名

hostnamectl set-hostname k8s-master01

2.安装依赖包

yum install -y conntrack ntpdate ntp jq  \
curl sysstat libseccomp wget net-tools vim git

3.关闭selinux和swap
必须防止k8s运行在虚拟内存中,否则会导致运行缓慢

swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab 

setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

4.关闭iptables以及firewalld

systemctl disable firewalld
systemctl stop firewalld
systemctl disable iptables
systemctl stop iptables

5.添加主机名与ip对应关系

cat /etc/hosts 
10.0.0.31 k8s-master01
10.0.0.32 k8s-master02
10.0.0.33 k8s-node01
10.0.0.34 k8s-node02

6.升级系统内核为 4.44
CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

//安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装 一次! 
yum --enablerepo=elrepo-kernel install -y kernel-lt 

// 设置开机从新内核启动 
grub2-set-default 'CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 8 (Core)'

7.kube-proxy开启ipvs的前置条件
ipvs:解决svc(service)和pod之间的调度关系,并且性能/功能都比iptables强大很多,

1.在所有节点上执行以下脚本

modprobe br_netfilter

cat > /etc/sysconfig/modules/ipvs.modules <

脚本创建了的/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。

2.在所有节点上安装ipset和ipvsadm

yum install ipset ipvsadm -y

3、安装 Docker 软件

所有节点安装

1.添加yum源以及安装

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce

// 启动docker(启动后会自动生成/etc/docker目录,否则需要手动创建)
systemctl start docker

2.配置daemon.json

cat >/etc/docker/daemon.json </-json.log(需要root权限才能够读),既然日志是存在磁盘上的,那么就要磁盘消耗的问题。下面介绍两个关键参数:
    - max-size,单个日志文件最大尺寸,当日志文件超过此尺寸时会滚动,即不再往这个文件里写,而是写到一个新的文件里。默认值是-1,代表无限。
    - max-files,最多保留多少个日志文件。默认值是1。

"exec-opts": ["native.cgroupdriver=systemd"]:Docker使用的文件驱动是systemd

3.重启docker服务并加入开机启动

systemctl daemon-reload && systemctl restart docker && systemctl enable docker

4、安装Kubeadm

所有节点统一安装kubelet kubeadm kubelectl

1.安装kubelet kubeadm kubelectl
导入阿里云的yum仓库

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

// 指定安装版本(这里统一使用1.15.1)
yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
systemctl enable kubelet.service

2.初始化Kubermetes master

kubeadm init \
--apiserver-advertise-address=10.0.0.31 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.1 \
--service-cidr=10.1.0.0/16   \
--pod-network-cidr=10.244.0.0/16

由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。

初始化master节点重要截图:
如何在Centos 7Kubeadm中安装kubernetes

使用kubectl工具:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl get nodes

3.安装Pod网络插件(CNI)

只在master节点操作,当node节点加入的时候也会自动安装该插件

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

确保能够访问到quay.io这个registery。

master的网络插件启动成功:
如何在Centos 7Kubeadm中安装kubernetes

4.node加入节点
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

kubeadm join 10.0.0.31:6443 --token 711bqn.ozruisxvcz1924fg \
    --discovery-token-ca-cert-hash sha256:295acb22b65296410968d040cfbb326642d2e3b177ccbc3626765a0ada6fa9ff

所有节点加入完成

[root@k8s-master01 ~]# kubectl get nodes
NAME           STATUS     ROLES    AGE     VERSION
k8s-master01   Ready      master   12m     v1.15.1
k8s-node01     Ready         4m39s   v1.15.1
k8s-node02     Ready      106s    v1.15.1

如果忘了join的命令咋办?可以使用下面的命令获取

[root@k8s-master01 ~]# kubeadm token list
TOKEN                     TTL       EXPIRES                     USAGES                   DESCRIPTION                                                EXTRA GROUPS
711bqn.ozruisxvcz1924fg   23h       2019-11-20T00:19:17+08:00   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token

5.kube-proxy开启ipvs

// 修改ConfigMap的kube-system/kube-proxy中的config.conf,把 mode: "" 改为mode: “ipvs" 保存退出即可。
kubectl edit cm kube-proxy -n kube-system

// 删除之前的proxy pod
kubectl get pod -n kube-system |grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'

6.测试Kubernetes集群
在Kubernetes集群中创建一个rc,验证是否正常运行:

创建一个文件nginx_obj.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 3
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: nginx
        image: nginx:1.13
        ports:
          - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30000
    targetPort: 80
  selector:
    app: myweb

指定该文件并创建rc

kubectl  create -f nginx_obj.yaml

查看pod和svc信息

[root@k8s-master01 ~]# kubectl get pods -o wide
NAME          READY   STATUS    RESTARTS   AGE   IP           NODE         NOMINATED NODE   READINESS GATES
myweb-l4vkm   1/1     Running   0          5s    10.244.1.2   k8s-node01              
myweb-qdxgp   1/1     Running   0          5s    10.244.3.2   k8s-node02              

[root@k8s-master01 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.1.0.1              443/TCP        22m
myweb        NodePort    10.1.205.42           80:30000/TCP   38s

访问地址:http://NodeIP:30000

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...