iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >CentOS7安装Kubernetes1.16.3
  • 867
分享到

CentOS7安装Kubernetes1.16.3

2023-01-31 08:01:02 867人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

手工搭建 kubernetes 集群是一件很繁琐的事情,为了简化这些操作,就产生了很多安装配置工具,如 Kubeadm ,Kubespray,RKE 等组件,我最终选择了官方的 Kubeadm 主要是不同的 Kubernetes 版本都有一

1.png

手工搭建 kubernetes 集群是一件很繁琐的事情,为了简化这些操作,就产生了很多安装配置工具,如 Kubeadm ,Kubespray,RKE 等组件,我最终选择了官方的 Kubeadm 主要是不同的 Kubernetes 版本都有一些差异,Kubeadm 更新与支持的会好一些。Kubeadm 是 Kubernetes 官方提供的快速安装和初始化 Kubernetes 集群的工具,目前的还处于孵化开发状态,跟随 Kubernetes 每个新版本的发布都会同步更新, 强烈建议先看下官方的文档了解下各个组件与对象的作用。

https://kubernetes.io/docs/concepts/
Https://kubernetes.io/docs/setup/independent/install-kubeadm/
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

 

系统环境

系统内核Dockerip主机名配置
Centos 7.63.10.0-957.el7.x86_6419.03.5192.168.31.150k8s-master2核4G
centos 7.63.10.0-957.el7.x86_6419.03.5192.168.31.183k8s-node012核4G

 

 

 

 

 

注意:请确保CPU至少2核,内存2G

关闭防火墙

如果各个主机启用了防火墙,需要开放Kubernetes各个组件所需要的端口,可以查看Installing kubeadm中的”Check required ports”一节。 这里简单起见在各节点禁用防火墙:

systemctl stop firewalld
systemctl disable firewalld

 

禁用SElinux

# 临时禁用
setenforce 0# 永久禁用 
vim /etc/selinux/config    # 或者修改/etc/sysconfig/selinux
SELINUX=disabled

 

修改k8s.conf文件

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

关闭swap

# 临时关闭
swapoff -a

 

修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载(永久关闭swap,重启后生效)

# 注释掉以下字段
/dev/mapper/cl-swap     swap                    swap    defaults        0 0

 

这里就不再叙述了,请参考链接:

https://www.cnblogs.com/xiao987334176/p/11771657.html

 

hostnamectl set-hostname k8s-master

注意:主机名不能带下划线,只能带中划线
否则安装k8s会报错

could not convert cfg to an internal cfg: nodeReGIStration.name: Invalid value: "k8s_master": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')

 

在各节点安装kubeadm,kubelet,kubectl

修改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=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
EOF

安装软件

目前最新版本是:1.16.3

yum install -y kubelet-1.16.3-0 kubeadm-1.16.3-0 kubectl-1.16.3-0
systemctl enable kubelet && systemctl start kubelet

以上,就是master和node都需要操作的部分。

 

运行初始化命令

kubeadm init --kubernetes-version=1.16.3 \
--apiserver-advertise-address=192.168.31.150 \
--image-repository registry.aliyuncs.com/Google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
参数解释:
–kubernetes-version: 用于指定k8s版本;
–apiserver-advertise-address:用于指定kube-apiserver监听的ip地址,就是 master本机IP地址。
–pod-network-cidr:用于指定Pod的网络范围; 10.244.0.0/16–service-cidr:用于指定SVC的网络范围;
–image-repository: 指定阿里云镜像仓库地址

 

这一步很关键,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址

集群初始化成功后返回如下信息:
记录生成的最后部分内容,此内容需要在其它节点加入Kubernetes集群时执行。
输出如下:

复制代码

...
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:  mkdir -p $HOME/.kube  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  sudo chown $(id -u):$(id -g) $HOME/.kube/config
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.31.150:6443 --token ute1qr.ylhan3tn3eohip20 \    --discovery-token-ca-cert-hash sha256:f7b37ecd602deb59e0ddc2a0cfa842f8c3950690f43a5d552a7cefef37d1fa31

复制代码

 

配置kubectl工具

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

安装Calico

mkdir k8s
cd k8s
wget https://docs.projectcalico.org/v3.10/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

## 将192.168.0.0/16修改ip地址为10.244.0.0/16
sed -i 's/192.168.0.0/10.244.0.0/g' calico.yaml

 

加载Calico

kubectl apply -f calico.yaml

 

查看Pod状态

等待几分钟,确保所有的Pod都处于Running状态

复制代码

[root@k8s_master k8s]# kubectl get pod --all-namespaces -o wide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP                NODE         NOMINATED NODE   READINESS GATESkube-system   calico-kube-controllers-6b64bcd855-tdv2h   1/1     Running   0          2m37s   192.168.235.195   k8s-master   <none>           <none>kube-system   calico-node-4xgk8                          1/1     Running   0          2m38s   192.168.31.150    k8s-master   <none>           <none>kube-system   coredns-58cc8c89f4-8672x                   1/1     Running   0          45m     192.168.235.194   k8s-master   <none>           <none>kube-system   coredns-58cc8c89f4-8h8tq                   1/1     Running   0          45m     192.168.235.193   k8s-master   <none>           <none>kube-system   etcd-k8s-master                            1/1     Running   0          44m     192.168.31.150    k8s-master   <none>           <none>kube-system   kube-apiserver-k8s-master                  1/1     Running   0          44m     192.168.31.150    k8s-master   <none>           <none>kube-system   kube-controller-manager-k8s-master         1/1     Running   0          44m     192.168.31.150    k8s-master   <none>           <none>kube-system   kube-proxy-6f42j                           1/1     Running   0          45m     192.168.31.150    k8s-master   <none>           <none>kube-system   kube-scheduler-k8s-master                  1/1     Running   0          44m     192.168.31.150    k8s-master   <none>           <none>

复制代码

注意:calico-kube-controllers容器的网段不是10.244.0.0/16

 

删除Calico,重新加载

kubectl apply -f calico.yaml
kubectl delete -f calico.yaml

 

再次查看ip

复制代码

[root@k8s-master k8s]# kubectl get pod --all-namespaces -o wide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP                NODE         NOMINATED NODE   READINESS GATESkube-system   calico-kube-controllers-6b64bcd855-qn6bs   0/1     Running   0          18s     10.244.235.193    k8s-master   <none>           <none>kube-system   calico-node-cdnvz                          1/1     Running   0          18s     192.168.31.150    k8s-master   <none>           <none>kube-system   coredns-58cc8c89f4-8672x                   1/1     Running   1          5h22m   192.168.235.197   k8s-master   <none>           <none>kube-system   coredns-58cc8c89f4-8h8tq                   1/1     Running   1          5h22m   192.168.235.196   k8s-master   <none>           <none>kube-system   etcd-k8s-master                            1/1     Running   1          5h22m   192.168.31.150    k8s-master   <none>           <none>kube-system   kube-apiserver-k8s-master                  1/1     Running   1          5h21m   192.168.31.150    k8s-master   <none>           <none>kube-system   kube-controller-manager-k8s-master         1/1     Running   1          5h22m   192.168.31.150    k8s-master   <none>           <none>kube-system   kube-proxy-6f42j                           1/1     Running   1          5h22m   192.168.31.150    k8s-master   <none>           <none>kube-system   kube-scheduler-k8s-master                  1/1     Running   1          5h21m   192.168.31.150    k8s-master   <none>           <none>

复制代码

发现,ip地址已经是10.244.0.0/16 网段了。

 

设置开机启动

systemctl enable kubelet

 

准备工作

请查看上文中的准备工作,确保都执行了!!!

修改主机名部分,改为k8s-node01

hostnamectl set-hostname k8s-node01

 

加入节点

登录到node节点,确保已经安装了docker和kubeadm,kubelet,kubectl

kubeadm join 192.168.31.150:6443 --token ute1qr.ylhan3tn3eohip20 \
    --discovery-token-ca-cert-hash sha256:f7b37ecd602deb59e0ddc2a0cfa842f8c3950690f43a5d552a7cefef37d1fa31

设置开机启动

systemctl enable kubelet

 

查看节点

登录到master,使用命令查看

复制代码

[root@k8s_master k8s]# kubectl get nodes -o wide
NAME         STATUS   ROLES    AGE     VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
k8s-master   Ready    master   87m     v1.16.3   192.168.31.150   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://19.3.5k8s-node01   Ready    <none>   5m14s   v1.16.3   192.168.31.183   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://19.3.5

复制代码

 

创建Nginx

kubectl create deployment nginx --image=--port= --type=

 

查看pod和svc

复制代码

[root@k8s-master k8s]# kubectl get pod,svc -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
pod/nginx-86c57db685-z2kdd   1/1     Running   0          18m   10.244.85.194   k8s-node01   <none>           <none>NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE    SELECTOR
service/kubernetes   ClusterIP   10.1.0.1       <none>        443/tcp        111m   <none>service/nginx        NodePort    10.1.111.179   <none>        80:30876/TCP   24m    app=nginx

复制代码

 

允许外网访问nodePort

iptables -P FORWARD ACCEPT

 

测试访问

使用master ip+nodeport端口方式访问

http://192.168.31.150:30876/

 

效果如下:

1.png

 

命令补全

(仅master)

yum install -y bash-completion

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
source  ~/.bashrc

必须退出一次,再次登录,就可以了 

 

flaskapp为例子

 

flaskapp-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flaskapp-1
spec:
  selector:
    matchLabels:
      run: flaskapp-1
  replicas: 1
  template:
    metadata:
      labels:
        run: flaskapp-1
    spec:
      containers:
      - name: flaskapp-1
        image: jcdemo/flaskapp
        ports:
        - containerPort: 5000

 

flaskapp-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: flaskapp-1
  labels:
    run: flaskapp-1
spec:
  type: NodePort
  ports:
  - port: 5000
    name: flaskapp-port
    targetPort: 5000
    protocol: TCP
    nodePort: 30005
  selector:
    run: flaskapp-1

 

加载yml文件

kubectl apply -f flaskapp-service.yaml 
kubectl apply -f flaskapp-deployment.yaml

 

访问页面

使用master ip+nodeport访问

http://192.168.31.183:30005/

效果如下:

1.png

 

 

注意:使用node节点ip+nodeport也可以访问。

 

本文参考链接:
https://yq.aliyun.com/articles/626118
https://blog.csdn.net/fenglailea/article/details/88745642


--结束END--

本文标题: CentOS7安装Kubernetes1.16.3

本文链接: https://www.lsjlt.com/news/193607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CentOS7安装Kubernetes1.16.3
    手工搭建 Kubernetes 集群是一件很繁琐的事情,为了简化这些操作,就产生了很多安装配置工具,如 Kubeadm ,Kubespray,RKE 等组件,我最终选择了官方的 Kubeadm 主要是不同的 Kubernetes 版本都有一...
    99+
    2023-01-31
  • centos7安装mysql5.7
    系统环境:Centos7.4搭建步骤如下:1.首先进入本机的源文件目录[root@edu-mycat-01 ~]# cd /usr/local/src/2. 使用wget下载官方yum源的rpm包:[roo...
    99+
    2024-04-02
  • centos7安装openvpn
    OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/...
    99+
    2023-01-30
    openvpn
  • CentOS7 安装 Python3.6
    先看编译安装,编译安装后的文件目录基本和Windows平台上目录差不多。指定安装路径的话,所有的文件都是在一起的。后面有yum的安装的方法。 编译安装,会装好setuptools和pip这两个工具,都在site-packages这个文件夹...
    99+
    2023-01-31
  • Centos7 Python3安装
    下面的操作,按照步骤来就可以了,不要在中途cd 到别的文件目录下,要想查看效果可以用 lsj加上对应的目录,不需要切换进去。首先不管你当前在哪个目录下,输入以下命令。[root@localhost /]# cd /[root@localho...
    99+
    2023-01-31
  • centos7安装selenium
    基本环境:centos7,python3.x 1.安装selenium pip3 install selenium 2.安装chrome-browser wget https://dl.google.com/linux/d... --no...
    99+
    2023-01-31
    selenium
  • centos7 安装 php8.2
    centos7 安装 php8.2 卸载之前的php版本 我之前也是用yum安装的其他版本的php 如果之前php-fpm启动的话 要关闭进程 systemctl stop php-fpm.servi...
    99+
    2023-10-26
    php linux centos
  • CentOS7 --- 安装MySQL
    目录  1.卸载MariaDB 1.1 查看是否存在MariaDB文件 1.2 卸载 1.3 检查是否卸载干净  2.安装MySQL 3.把MySQL加到Linux里 4.解压&重命名  5.创建数据目录&用户组&用户 5.1创建数据目录 ...
    99+
    2023-09-09
    mysql
  • CentOS7安装MySQL8
    文章目录 一 前言二、Centos 7 安装 mysql8 步骤:1.下载MySQL官方的 Yum Repository2.安装方法一: 用wget 下载后安装方法二:下载 RMP 软件包将该...
    99+
    2023-10-22
    mysql centos linux
  • centos7安装php
    在 CentOS 7 上使用 Remi 仓库安装 PHP 7.4,您可以按照以下步骤操作  安装 EPEL 仓库: yum install -y epel-release  安装 Remi 仓库: sudo yum install -y ...
    99+
    2023-09-22
    php 开发语言
  • VMware安装centos7
    文章目录 一、配置虚拟机1、先准备安装镜2、开启虚拟化支持3、在VM中新建虚拟机4、新建虚拟机向导选择5、选择硬件兼容性6、安装客户机操作系统7、选择操作系统8、确定系统的安装位置9、配置当前...
    99+
    2023-09-08
    linux 运维 服务器
  • centos7 安装 ipython3
    [root@cn-engine ~]# uname -aLinux cn-engine 3.10.0-123.9.3.el7.x86_64 #1 SMP Thu Nov 6 15:06:03 UTC 2014 x86_64 x86_64 x...
    99+
    2023-01-31
  • Centos7 安装 Odoo11
    1 安装python3.6 Centos7 基于稳定性考虑安装的是python2.7,而且默认的官方 yum 源中不提供 Python 3 的安装包,所以我们要先换一个提供python3的yum源-- IUS 。 1、IUS软件源依赖...
    99+
    2023-01-31
  • centos7安装jenkins
    安装jdk解压jdkmkdir /data tar zxvf jdk-8u211-linux-x64.tar.gz -C /data/添加环境变量vim /etc/profile最...
    99+
    2023-01-31
    jenkins
  • CentOS7安装python3.6.6
    ##1. 下载Python包 wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz ##2. 解压Python包 tar -xzvf Python-3.6.6.t...
    99+
    2023-01-30
  • centos7安装python3.6.5
    安装python3.6可能使用相关软件# yum groupinstall 'Development Tools'# yum install -y ncurses-libs zlib-devel mysql-devel bzip2-dev...
    99+
    2023-01-31
  • Centos7安装Redis
    Centos7安装Redis 1.单机安装Reids 多数情况下我们都需要基于Linux服务器来部署项目,而且redis官方也没有提供Windows版本的安装包。所以我们就可以在centos虚拟机来部...
    99+
    2023-09-10
    java linux
  • centos7 安装python3
    centos7原本就安装了Python2,yum依赖于它。如果要替换掉,需要使用特殊方法。安装epel更新源下载epel文件epel-release-latest-7.noarch.rpmwget https://mirrors.aliyu...
    99+
    2023-01-30
  • Centos7安装Tensorflow
    本文记录了安装过程,为后续重复工作节省时间。有问题请联系zhangtiey@gmail.com 一开始基于python2安装的TensorFlow,后来发现要基于python3,又折腾了一遍。好的地方是基于virtualenv,以前的安装...
    99+
    2023-01-31
    Tensorflow
  • Centos7 安装Python3.7
    # 更改yum源 cd /etc/yum.repos.d mv CentOS-Base.repo CentOS-Base.repo.bak wget -O CentOS-Base.repo http://mirrors.aliyun.co...
    99+
    2023-01-31
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作