k3s安装
设置hostname 唯一, k8s1为master,其他为node
hostnamectl set-hostname --static k8s1
hostnamectl set-hostname --static k8s2
hostnamectl set-hostname --static k8s3
三台机器都配置vi /etc/hosts
192.168.7.176 k8s1
192.168.7.125 k8s2
192.168.7.123 k8s3
安装docker
apt-get install -y docker.io
master安装,默认使用container,可以指定docker
master运行
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
- 指定docker
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="server --docker" sh -
查看node
kubectl get node -o wide
查看token
cat /var/lib/rancher/k3s/server/token
K10f75c7935abda173f0af314bb38f1f5b7b3f1290f24c0d63ac1fb46294e5f67c2::server:d67ddc5eb895313910bbbad9819e9d67
node安装,默认使用container,可以指定docker
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://k8s1:6443 K3S_TOKEN=K10f75c7935abda173f0af314bb38f1f5b7b3f1290f24c0d63ac1fb46294e5f67c2::server:d67ddc5eb895313910bbbad9819e9d67 sh -
- 指定docker
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" K3S_URL=https://k8s1:6443 K3S_TOKEN=K10f75c7935abda173f0af314bb38f1f5b7b3f1290f24c0d63ac1fb46294e5f67c2::server:d67ddc5eb895313910bbbad9819e9d67 sh -
kubectl命令补全tab
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
运行nginx, 小demo
mkdir -p k3s/nginx && cd k3s/nginx
cat nginx-deployment.yml
apiVersion: apps/v1 #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment #该配置的类型,我们使用的是 Deployment
metadata: #译名为元数据,即 Deployment 的一些基本属性和信息
name: nginx-deployment #Deployment 的名称
labels: #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
app: nginx #为该Deployment设置key为app,value为nginx的标签
spec: #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
replicas: 3 #使用该Deployment创建一个应用程序实例
selector: #标签选择器,与上面的标签共同作用,目前不需要理解
matchLabels: #选择包含标签app:nginx的资源
app: nginx
template: #这是选择或创建的Pod的模板
metadata: #Pod的元数据
labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Pod
app: nginx
spec: #期望Pod实现的功能(即在pod中部署)
containers: #生成container,与docker中的container是同一种
- name: nginx #container的名称
image: nginx:alpine #使用镜像nginx创建container,
ports:
- containerPort: 80 #内部服务暴露的端口
cat nginx-service.yml
apiVersion: v1
kind: Service #该配置的类型,我们使用的是 Service 服务类型
metadata:
name: nginx-service #该服务类型的名称
spec:
selector: #选中的app部署实例
app: nginx #为该Deployment设置key为app,value为nginx的标签
ports: #暴露的端口
- protocol: TCP # 走得tcp 协议
port: 80 #默认端口
targetPort: 80 #内建服务端口
nodePort: 30080 #对外服务端口
type: NodePort
kubectl create -f nginx-deployment.yml -f nginx-service.yml