云服务器部署k3s

687 阅读3分钟

云服务器部署k3s并使用docker作为默认容器

准备工作,masteragent节点都需要
	

准备k3s的相关文件,这里我都放在百度网盘了,也可以去Github下载最新文件


	

下载地址:https://pan.baidu.com/s/1r-XAAE9Or3_kep2Mue5I8g


	

提取码:4xyk


	

上传文件到服务器
安装docker(masteragent节点都需要)

参考:https://www.chenmx.net/?p=31

设置hostname(masteragent节点都需要)
	

# 根据规划设置主机名  hostname:名称,方便记忆


	

hostnamectl set-hostname hostname


	
	

# 在master节点添加hosts


	

cat >> /etc/hosts << EOF


	

82.156.215.56 k3s-master #k8smaster->上文中的hostname


	

124.71.156.166 k3s-node #同理


	

49.232.0.68 k3s-node1 #同理


	

EOF
建立虚拟网卡(masteragent节点都需要)
	

cat > /etc/sysconfig/network-scripts/ifcfg-eth0:1 <<EOF


	

BOOTPROTO=static


	

DEVICE=eth0:1


	

IPADDR=82.156.215.56 #你的公网IP


	

PREFIX=32


	

TYPE=Ethernet


	

USERCTL=no


	

ONBOOT=yes


	

EOF


	

#重启网卡


	

systemctl restart network


	

查看全部IP


	

ip addr

重启生效(masteragent节点都需要)

reboot

给予相应的权限(masteragent节点都需要)
	

chmod 755 k3s


	

chmod 755 install.sh


	

chmod 755 k3s-airgap-images-amd64.tar
创建链接(masteragent节点都需要)
cp k3s /usr/local/bin/k3s  

将所需镜像文件拷贝(masteragent节点都需要)
	

mkdir -p /var/lib/rancher/k3s/agent/images/


	

cp k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
docker导入镜像(masteragent节点都需要)
docker load -i k3s-airgap-images-amd64.tar

离线安装k3s并指定docker为默认容器(master节点执行)
	

INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh - --docker --node-external-ip=<PUBLIC_IP> --node-ip=<PUBLIC_IP> --kube-apiserver-arg="advertise-address=<PUBLIC_IP>" --kube-apiserver-arg="external-hostname=<PUBLIC_IP>" --tls-san=<PUBLIC_IP>


	

#<PUBLIC_IP>为你的公网ip


	

#集群内网互通的直接执行


	

INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh - --docker
更改配置文件(master节点执行)
	

vim /etc/rancher/k3s/k3s.yaml


	

#修改server的地址为公网ip


	

server: https://public_ip:6443


	

#获取节点信息


	

kubectl get nodes


	

kubectl edit nodes node_name


	

#在public-ip下增加一行,申明使用公网ip,后续添加agent节点,需要给agent节点申明公网ip


	

    flannel.alpha.coreos.com/public-ip: 10.0.8.15


	

    flannel.alpha.coreos.com/public-ip-overwrite: public_ip  ##增加这行


	

#集群内网互通的不需要这一步
验证是否成功
	

#查看节点信息


	

kubectl get node -o wide


	

#查看所有pod信息


	

kubectl get pods -all-namespaces -o wide
查看集群token

cat /var/lib/rancher/k3s/server/node-token

重启k3s
	

systemctl daemon-reload


	

systemctl restart k3s
添加agent节点
	

INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL="https://master_ip:6443" K3S_TOKEN="K1048516504rr613d52wdad6ae6673bd41f1d0b329dd77fea141c274ae8b030278b::server:f6c4af149cd5ce538fbf598236bcdca8" ./install.sh - --docker --node-external-ip=public_ip --node-ip=public_ip --tls-san=public_ip


	

#public_ip为agent节点的公网ip


	

#master_ip为master节点的公网ip


	

#K3S_TOKEN 加入集群的token
验证agent是否加入成功(master节点执行)
	

kubectl get nodes -o wide


	

#成功后执行更改配置文件那步,agent节点申明使用公网ip

在集群中安装kubesphere

踩坑:这一步在配置完master节点配置完毕就安装,不能等agent节点加入后安装,否可能会出现kubesphere 安装到任意一节点,导致登陆报错失败。

官方文档

  • 提前准备好docker镜像(我的机器看心情下镜像,有时候就镜像就拉取失败,所以我提前准备好了)

    	
    
    docker pull kubesphere/ks-installer:v3.1.0
    
    
    	
    
    docker pull csiplugin/snapshot-controller:v2.0.1
    
    
    	
    
    docker pull kubesphere/notification-manager-operator:v1.0.0
    
    
    	
    
    docker pull kubesphere/notification-manager:v1.0.0
    
  • 安装kubesphere

    	
    
    ##下载失败就多试几次
    
    
    	
    
    wget https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/kubesphere-installer.yaml
    
    
    	
    
    wget https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/cluster-configuration.yaml
    
    
    	
    	
    
    kubectl apply -f kubesphere-installer.yaml
    
    
    	
    
    kubectl apply -f cluster-configuration.yaml
    
    
    	
    
    #查看日志
    
    
    	
    
    kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
    
  • 验证
    image-20210712112043950

    	
    
    浏览器访问 http://master_public_ip:30880
    
    
    	
    
    初始用户名:admin
    
    
    	
    
    密码:P@88w0rd
    
k3s中各个目录小计
	

#master节点配置文件


	

/etc/systemd/system/k3s.service


	

#agent节点配置文件


	

/etc/systemd/system/k3s-agent.service


	

#kubectl 命令自动补全


	

yum install bash-completion


	

source /usr/share/bash-completion/bash_completion


	

source <(kubectl completion bash)


	

#查看集群默认DNS


	

cat /etc/resolv.conf 
我安装过程查看了很多文章,很多都说需要升级CentOS7的内核,但是我升级内核后发现k3s会安装失败,所以我都是用默认的内核。如果有知道的大佬告诉我哈~~

欢迎大家来我的个人小站逛逛:www.chenmx.net

Q.E.D.