centos7 搭建kubernates
centos7 搭建kubernates环境
作者 | 时间 | 说明 |
---|---|---|
雨中星辰 | 2021-1-20 |
环境说明
- 系统:CentOS Linux release 7.8
- 硬件:master 4 core 19GB, Node : 32core 64 GB
前置准备
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭交换空间
swapoff -a
删除swap的加载
image.png一键完成命令:sed -i '/swap/s/^/#/' /etc/fstab
将机器bridge模式开启
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
或修改/usr/lib/sysctl.d/00-system.conf
并按照下面方式设置
# Kernel sysctl configuration file
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Enable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
快捷命令:
sed -i 's/net.bridge.bridge-nf-call-ip6tables.*/net.bridge.bridge-nf-call-ip6tables = 1/' /usr/lib/sysctl.d/00-system.conf
sed -i 's/net.bridge.bridge-nf-call-iptables.*/net.bridge.bridge-nf-call-iptables = 1/' /usr/lib/sysctl.d/00-system.conf
sed -i 's/net.bridge.bridge-nf-call-arptables.*/net.bridge.bridge-nf-call-arptables = 1/' /usr/lib/sysctl.d/00-system.conf
禁用SElinux
修改/etc/sysconfig/selinux
将SELINUX=disabled
修改为SELINUX=disabled
也可使用下面命令可一键完成。
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
安装docker
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新缓存
sudo yum makecache fast
# Step 4: 安装docker
sudo yum -y install docker-ce
# Step 5: 开启Docker服务
sudo systemctl start docker
# Step 6: 设置Docker服务开机启动
sudo systemctl enable docker
安装kubernates
安装kubectl
# step 1: 添加kubernetes的阿里云镜像源
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
# Step 2: 更新缓存
setenforce 0
yum makecache fast
# Step 3: 安装kubelet
yum install -y kubelet kubeadm kubectl
# Step 4: 设置kubelet开机启动
systemctl enable kubelet
# Step 5: 启动kubelet
systemctl start kubelet
配置kubeadm config
# step 1: 将kubeadm config配置输出到本地
kubeadm config print init-defaults >init-config.yaml
# 修改init-config.yaml,将advertiseAddress: 1.2.3.4的ip修改为master的ip,将serviceSubnet: 10.96.0.0/12修改为serviceSubnet: 192.168.0.0/12
vi init-config.yaml
快捷方式:
sed -i 's/advertiseAddress: 1.2.3.4/advertiseAddress: master的ip/' init-config.yaml
sed -i 's/serviceSubnet: 10.96.0.0/serviceSubnet: 192.168.0.0/' init-config.yaml
下载kubernates的相关镜像
kubeadm config images pull --config=init-config.yaml
由于默认拉取镜像地址k8s.gcr.io国内无法访问,需要科学上网或者镜像仓库的方式
我是使用的科学上网代理的方式
image.png配置方式:
mkdir /etc/systemd/system/docker.service.d
cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.1.30:1080"
EOF
执行初始化,并安装master
kubeadm init --config=init-config.yaml
image.png
按照提示进行配置,例
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
让Master也是Node
由于测试只准备了一台机器,就将Master和Node装一台机器了。
kubectl taint nodes --all node-role.kubernetes.io/master-
安装网络插件
Kubernates 默认是没有安装网络CNI插件的,需要自行选择一个进行安装。
在没有安装CNI网络插件时,执行命令kubectl get nodes
会发现Master状态为NotReady
。
这里我选择了weave的网络插件,安装命令:kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
。
测试kubernates功能
-
创建nginx deployment
kubectl create deployment nginx --image=nginx -
查看deployment状态,nginx status为Running,则说明pod创建成功
kubectl get deployment
-
创建service
kubectl expose deployment nginx --port=88 --target-port=80 --type=NodePort -
查看service
kubectl get service
其中红色部分为nginx映射的本地端口
-
访问nginx
curl localhost:30264
如果能返回东西,则说明nginx是可用的,咱们整个kubernates环境也没有问题,安装完毕了。
相关问题:
-
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
echo 1 > /proc/sys/net/ipv4/ip_forward