►
From YouTube: Kubernetes SIG CLI 20230503
Description
Kubernetes SIG CLI bi-weekly meeting on May 3rd, 2023.
Agenda and Notes: https://docs.google.com/document/d/1r0YElcXt6G5mOWxwZiXgGu_X6he3F--wKwg-9UBc29I/edit#bookmark=kix.11h01h1pxtb7
A
Foreign
edition
of
the
kubernetes
6C
live
bi-weekly
meeting
I'm
Sean
Sullivan
I'm
your
host.
Let's
go
directly
into
announcements
and
there
are
not
many
of
them.
We
still
as
far
as
I
know,
do
not
have
any
specific
dates
for
the
next
release.
The
version
128
release.
A
So
let's
go
into
the
next
section
of
our
meeting,
which
is
where
we
get
to
meet
the
new
members.
If
there's
anybody
who
is
new
or
hasn't
been
here
for
a
while
and
like
to
reintroduce
yourself
or
introduce
yourself
to
the
rest
of
the
Sig,
this
is
your
opportunity
and
of
course,
this
is
just
voluntary.
C
I
submitted
the
topic
to
discuss.
It
is
my
first
time
I
participate
in
the
meeting
and
in
this
sig
in
general,
I
work
for
a
Google
Cloud
as
a
developer
relation
engineer
and
use
and
in
the
past,
contributed
to
kubernetes
a
couple
of
times
glad
to
be
here
and
hope
for
a
productive
discussion.
Thank
you.
A
If
not,
we
could
move
on
to
the
next
section,
which
is
the
kept
or
sub-project
updates.
Is
there
anyone.
D
Who
would
like
to
give
us
an
update
on
a
sub-project
I?
Don't
see
anybody
from
customize
here.
D
Which
is,
and-
and
our
first
topic
has
to
do
with
the
with
the
coup,
cuddle
weight
and
the
Json
path,
arbitrary
Json
path
for
it,
I'm
gonna
change
the
what's
being
presented
to
this
issue.
Is
it
visible?
C
Yes,
thank
you.
C
So
in
the
past
there
were
a
few
requests
to
extend
weight,
command
functionality
beyond
the
status,
and
it
has
it
had
different
forms
and
eventually
the
functionality
of
both
that
was
implemented,
built
based
on
Json
pathway
when
the
command
allows
to
define
a
some
predefined
Json
path
based
on
the
standard,
Json
pass
specifications
and
the
weight
behaves
the
same
like
with
the
with
the
status,
but
it
monitors
the
value
for
the
specific
Json
path
and
once
the
value
match
the
band
defined
in
the
command,
the
weight
is
considered
as
successful
and
completes.
C
However,
it's
still
leaves
one
specific
use
case
outside
not
supported
the
case
when
the
value
for
this
Json
path
can
be
known
at
the
time
of
the
command,
as
the
most
popular
example
is
a
ITA
address
of
the
load
balancer
service.
C
When
users
want
to
wait
until
the
service
receives
as
IP
address
and
right
now,
it
can
be
done
based
on
events.
It
can
be
done
based
on
the
state,
and
the
only
way
to
do
it
is
to
wait
by
validating
the
specific
Json
path,
status,
dot,
load,
balancer,
dot,
Ingress
and
IP
and
because
say
p
is
not
known
ahead.
Of
the
time
can
be
known.
C
C
If
the
IP
is
there
or
not,
and
similar
situation
happens
in
couple
of
other
cases,
for
example,
if
you
would
like
to
wait,
you
have
a
flow
when,
after
initialization
some
controller
setup,
additional
annotation
on
the
command,
and
it
is
conditioned
on
the
logic
of
an
initialization
and
many
more
so
I
I
wanted
to
suggest
to
extend
the
current
implementation,
but
allowing
defining
a
Json
path
without
value,
so
the
functionality
will
be
just
if
such
a
path
has
any
non-empty
value.
C
A
So
so
after
so
so
what
you
said
and
what
I've
read
actually,
it
sounds
very,
very
useful.
The
functionality
you're
describing
the
issue
looks
like
it's
closed.
D
It
was
closed
on
this
particular
PR,
so
I
think
we.
A
A
Does
anybody
else
have
an
opinion
on
this
I
think
this
sounds
really.
D
E
In
the
Json
path,
Library
like
we
wouldn't
have
to
make
changes
within
the
library
we
just
split
the
thing
up
and
say:
if
there's
nothing
on
the
other
side
of
the
equal
sign
or
like
probably
shouldn't
make
it
nothing
like
there's
a
I,
don't
know,
we
would
have
to
figure
out
something
that's
meaningfully
unique
to
base
that
off
of
further
to
for
it
to
look
up
like
a
quote.
Unquote,
any.
C
To
look
into
the
current
implementation
so
to
to
make
this
change,
there's
no
need
to
modify
Jason
part
library
at
all.
All
logic
can
be
implemented
in
the
wait
command
Handler.
C
Basically,
with
the
minimal
changes
it
is
as
I
mentioned,
it
is
basically
an
extension.
So
if
it
is
okay,
I
will
create
a
new
issue.
I
believe
that,
like
Reviving
The,
closed
issues
will
be
confusing
because
it
is
in
general,
a
separate
topic.
I
will
reference
this
issue
inside,
and
can
you
provide
the
guidelines?
What
should
come
next
after
the
issue
is
opened.
A
So
so
it
will
I
think
that
it
will
be.
If
we
agree,
I
haven't
heard
too
much
pushback,
we
would
triage
accept
it,
and
then
we
can
organize
the
the
actual
effort
to
develop.
C
Issue
and
I
will
then
communicate
in
the
issue
about
the
next
steps.
Is
it.
A
Okay,
okay,
great
and
if
you,
if
you
assign
me
or
CC
me
then
I
can
I
can
make
sure
that
it
gets
triage
accepted.
D
So
that
we
can,
we
can
move
on
with
it.
Okay,.
A
C
F
No
I
think
I
think
it
makes
sense,
especially
the
first
part.
The
second
part
I'd
be
a
bit
curious
to
see
more
of
what
you
think.
A
use
case
would
look
like.
F
F
F
We
don't
support
a
lot
of
like
the
built-in
helper
functions
that
people
would
expect
coming
from
a
different
Json
path.
Library.
E
Yeah
I
think
this
isn't
so
much
about
the
actual
parsing
of
the
path
itself
and
so
much
the
value
that
that
we
need
to
be
working
with
which
shouldn't
be
shouldn't,
be
too
complicated
to
implement.
C
D
Okay,
great
so,
if
we're
agreed
we'll
move
on
to
the
next
issue,
which
I've
just
recently
added
okay
to
test
to,
let
me
share
this
particular
tab
and
this
is
with
Muhammad.
Would
you
like
to
describe
your
your
PR?
Yes,.
H
Yes,
so
we
discussed
this
in
last
community
meeting
I
asked
I
mean
I
want
to
add
announcement
in
the
qprint
helper.
We
have
one
callback
that
we
call
on
what
deleted
or
evicted
I
also
wanted
to
add
the
callbacks
for
when
the
deletion
eviction
started
or
when
it's
failed,
so
it
I
have
added
it
and
also
entered
the
test.
I
would
like
someone
to
review
it.
If
there
is
anything
that
need
to
be
changed,
I
can
I
can
improve
the
changes.
H
A
So
I've
also
I'm
sharing.
Now
the
the
issue
associated
with
it,
the
cuddle
drain
improvements
and.
D
And
so
we'll
want
to
triage,
accept
that
before
we
probably
before
we're
going
to
spend
too
much
time
on
the
on
the
pr
itself.
A
But
it
does
sound
very
like
a
very
common.
F
F
A
We
should
we
add
a
triage
accepted
to
the
to
the
issue.
A
Okay,
yeah
I've
I've,
just
added
the
okay
to
test
on
the
pr
and
and
I'll.
If.
A
H
D
A
Great
I
think,
should
we
be
able
to
move
on
to
the
next
issue.
A
Do
you
do
you
have
what
you
need
to
move
forward?
Muhammad,
yes,.
D
Okay,
so
so
Eddie
you're
up
next.
F
Yes,
do
we
have
Brian?
No,
we
don't
have
Brian
we.
So
we
we
discussed
this
Brian
did
a
great
write-up
on
the
Pod
metrics
issues
that
we've
been
running
into,
where
we're
not
quite
sure
what
the
date
is
supposed
to
be.
F
I
we've
had
new
issues
be
open
that
are
related
to
this,
so
I
wanted
to
discuss
what
the
action
was.
I
think
the
last
we
spoke
was
we
were
going
to
check
in
with
API
Machinery
to
see
what
the
intended
purpose
is,
but
we
can
probably
punt
this
to
next
meeting
and
I
can
poke
Brian
about
it.
A
Okay,
great
and
yeah,
there's
a
API
Machinery,
meaning
in
about
an
hour.
D
And
a
half
if
I
I'll.
D
Okay,
great:
let's
move
on
to
the
next
one,
which
is
again
Eddie,
which
is
for
Coupe
cuddle
port
forward
yeah.
F
Another
one
I
was
hoping
that
Brian
would
be
here,
for
we've
talked
a
few
times
about
needing
to
rework
port
forward.
There's
tons
of
old
issues
that
are
brought
back
up.
I
tried
to
fix
a
bug
this
week.
I
have
an
open
PR
that
I
need
to
get
back
to
some
feedback
on,
but
the
I
think
what
we
wanted
to
discuss
was.
We
do
want
to
rewrite
port
forward
and
a
lot
of
that
old
library
code.
The
dependency
there
is
on
speedy
and
so
I
know
that
y'all
had
a
plan
to
start
switching.
F
A
Sure
so
yeah
what
I
was
going
to
talk
about
was
just
kind
of
a
deep
dive
on
to
give
everybody
some
context
on
how
some
of
these
commands
that
use
these
bi-directional
streaming
protocols
work,
and
so
let
me
switch
what
I'm.
What
I'm
sharing
here
to.
D
A
Okay,
great
I
just
have
a
couple
of
slides,
so
I
know
for
myself.
Since
we
we're
in
the
coupon
code,
we
don't
really
get
to
see
a
lot
of,
or
at
least
I
don't
I'll
speak
for
myself,
a
lot
of
the
what
happens,
kind
of
in
the
back
end
and
and
some
of
our
commands
actually
are
reaching
all
the
way
into
the
Container
run
times,
and
so
what
I
was
gonna
show
was
since
we're
starting
an
effort
to
move
from
Speedy
to
websockets
was
a
couple
of
diagrams
about.
A
What's
going
on
for
some
of
our
Cube
cuddle
commands
that
are
using
these
bi-directional
streaming
protocols.
So
what
is
a
bi-directional
streaming
protocol
So
currently
kubernetes
is
using
Speedy.
We
hope
to
move
to
websockets,
since
it's
better
supported
and
at
a
very
high
level.
What
speeding
websockets
are.
They
are
you're
able
to
throw
arbitrary
streams
of
data
in
both
directions
instead
of
your
typical
HTTP
sender,
request
and
then,
once
you
look
at
that
request,
you
send
a
response.
A
These
bi-directional
streaming
protocols
allow
much
more
much
better
low
latency
for
for
a
bunch
of
different
applications
and
for
us
those
applications
are
I.
Put
the
commands
here,
like
Coupe,
cuddle,
exec,
cuddle
copy,
Coupe
cuddle
attach
or
the
aforementioned
Coupe
cuddle
port
forward,
and
so
this
particular
diagram
attempts
to
give
a
better
explanation
of
what
the
different
touch
points
are
when
we
do
a
coupe
cuddle,
exec,
usually
for
most
of
our
Coupe
cuddle
commands,
they
are
just
talking
to
the
API
server
and
the
API
server
is
responding.
A
In
this
case.
The
API
server
and
the
kublet
are
proxying.
These
commands
to
The
Container
runtime
and,
as
you
can
see
on
the
bottom,
there
is
for
the
container
runtime
interface.
There
is
an
ad
hoc
server
created
on
the
container
runtime
by
doing
a
call
to
The
Container
runtime
interface
called
get
exec
on
a
particular
node
or
on
a
particular
container
runtime,
and
then
it
proxies
again
using
Unix,
sockets
and
and
actually
grpc
in
between
the
the
kublet
and
the
container
runtime.
A
So
this
this
diagram
is
pretty
busy,
but
I
think
that
it
might
be
better
I'm
just
going
to
keep
going
and
and
and
I'll
answer
some
questions
at
the
end
or
attempt
to
answer
the
questions
at
the
end,
if
that's
okay.
A
A
That's
being
communicated
over
this
connection,
that
we
call
remote
command,
which
unsurprisingly,
allows
us
to
run
a
command
on
a
container
on
one
of
the
nodes
and-
and
it
turns
out
that
we
Multiplex
the
the
standard,
input,
standard
output
and
standard
error
onto
this
one
connection
and
then,
on
the
other
end.
I
try
to
illustrate
that.
Actually,
these
the
the
data
that's
coming
in
on
standard
input
is
actually
connected
to
the
standard
input
on
that
on
that
container
and
the
same
for
the
standard
output
and
the
standard
error.
A
A
So
basically,
what
the
the
high
level
is
that
one
connection
is
able
to
is
good
enough
to
Multiplex
all
of
the
data
necessary
to
send
to
a
container
and
to
receive
from
a
container
that's
running
in
a
particular
node.
A
And
so
how
is
it
that
we
we
get?
This
connection
since
you
know
the
we
have
a
rest.
Api
for
for
kubernetes
well
are
are
1.1
request
that
we
send
is
actually
upgraded
to
this
streaming
protocol,
and
this
is
what
this
HTTP
request
and
response
look
like
so
for
for
kubernetes
and
the
the
purple
here
is
the
exact
sub
resource,
meaning
that
we're
we're
doing
an
exec
command
and
the
exact
exact
command
is
actually
one
of
the
query
parameters.
A
So
the
two
most
important
headers
are
the
connection
upgrade
and
what
what
bi-directional
streaming
protocol
that
we're
going
to
upgrade
to
and
then
in
the
in
the
reddish
pink,
are
the
possible
versions
that
we
can
negotiate
for,
for
which,
which
versions,
The
Speedy
server
on
the
container
understands
and
that
server.
If
it's
successful
it's
going
to
send
and
you
can
see
in
the
blue,
it
sends
a
a
101
switching
protocols
with
another
hat,
with
the
same
header
of
the
upgrade
Speedy
3.1
and
It
The
Chosen
version
of
the
protocol.
A
A
So
this
talks
about
why
we
want
to
transition
from
Speedy
to
websockets,
which
I'm
not
going
to
go
too
deeply
into
here,
but
it's
it's
basically
that
Speedy
has
been
deprecated
for
many
many
years
and
and
websockets
is
the
only
bi-directional
streaming
protocol.
That's
that's
even
really
supported
anymore,
and
so,
if
you
have
any
intermediaries,
like
proxies
or
L7,
load,
balancers
or
gateways,
they
have
to
speak
this
protocol.
A
In
order
for
for
you
to
be
able
to
to
have
these
Coupe
cuddle
commands
work
through
those
proxies
and
and
so
we're
seeing
a
lot
that
are
that,
obviously
don't
speak
Speedy
anymore,
since
it's
been
deprecated
for
eight
years,
and
so
this
this
has
been
an
issue
for
for
quite
a
while
and
so
we're
addressing
it
now.
A
Okay.
So
this
is
a
diagram
showing
how
we,
how
we're
going
to
attempt
to
or
how
we
are
attempting
to
address
the
transition
and
basically,
what
we're
trying
to
do
is
just
do
web
sockets
from
the
client
to
the
API
server.
Since
that
solves
our
problem,
and
then
we
don't
want
to
really
touch
all
the
rest
of
the
elements
or
components
in
the
system.
A
In
our
cluster,
because
that's
going
to
be
that's
going
to
really
be
difficult
to
to
move
to
get
out,
since
we
would
have
to
basically
change
all
the
different
container
runtimes,
which
is
where
this
bi-directional
streaming
protocol
is
terminated,
and
so
instead,
what
we
want
to
do
is
that
the
API
server
have
a
proxy
that
is
going
to,
and
we've
already
got
a
a
proof
of
concept
of
this.
We
terminate
the
websockets
and
all
of
the
data.
A
All
of
these
channels
that
are
that
are
received
at
the
websocket
server
are
then
thrown
onto
a
speedy
client,
which
is
communicating
Upstream
the
same
way
it
was
before
so
we
we
already
have,
if
you're
interested
in
looking
at
it,
this
particular
PR
as
a
work
in
process.
We
have
the
stream
translator
proxy
working.
These
are
examples
of
some
of
the
exact
commands
and
copy
commands
that
are
working,
and
so
that's
actually
I
think
I've
spoken
quite
a
bit.
A
How
about,
if
I
get
some
some
questions,
so
so
was
this
useful
at
all,
so
it
would
be
good.
You
good
feedback
for
me
is
like
what
what
didn't
this
explain
or
what
big
questions
do
you
have
in
your
mind
that
this
didn't
give
a
10,
000
foot
overview
to.
F
This
was
great
Sean.
Thank
you
for
this
info.
I
learned
a
ton.
The
question
I
have
is
the
so
you
said:
hdb2
wasn't
really
a
viable
option.
Could
you
could
you
go
into
that?
A
bit
more
I
thought.
Http
2
has
like
streams
built
in,
but
you
said
they're
they're
too
Speedy
like.
A
Yeah,
actually
it's
it's
not
something
that
I
have
a
lot
of.
It
was
actually
surprising
to
me
and
and
I
think
surprising
to
others.
A
So
HTTP
2.0
is
actually
built
on
top
of
Speedy,
and
so
you
would
think
that
it
would
be
very
feature
Rich
when
it
comes
to
bi-directional
streaming
protocols,
but
they
don't
they
don't
surface
that
and
for
some
reason
in
the
go
standard
Library,
you
know
I
actually
ran
into
it,
but
by
accidentally
sending
an
HTTP
2.0
request,
while
while
doing
while
debugging
this
and-
and
it
gives
me
a
400
level,
error
and
I
thought,
I
did
something
wrong
and
I
went
into
the
library
code
and
it
was
actually
it
does
not
support
the
upgrade
header
at
all
for
the
golang
standard
Library.
A
So
so,
I,
don't
know
why
that
that
is
the
case
because
HTTP
like
I,
said
http
2.0
is
Speedy
basically,
and
you
would
think
that
it
would
be
very
easy
to
access
the
functionality.
That's
already
there
for
this
bi-directional
streaming
and
it
it's
not.
It's
actually
yeah
I,
don't
I
and
I.
Honestly,
I
don't
know,
and
maybe
there's
something
that
I'm
missing,
but
when
I,
when
I
present
I'm
gonna
actually
present
this
and
a
little
bit
more
at
the
API
Machinery
meeting
in
an
hour
and
a
half
I.
F
A
Okay,
I'll
show
that
with
the
rest
of
the
group,
when
I,
if
I
get
more
information,
if
and
when.
G
Eddie,
you
said
in
the
chat
that
port
forward
is
execs
to
soak
out
on
the
Node,
but
if
I,
if
I'm
running
a
multi-user,
kubernetes
and
I
don't
have
access
to
the
node
word,
for
it
still
works,
that's
not
a
question.
It
does
still
work.
So
how?
How
are
those
two
compatible
yeah.
F
A
And
so
one
of
one
of
the
commands
that
we
use
this
remote
command
sub
protocol
with
is
Coupe
cuddle
copy
and
could
cuddle
copy
is
not
its
own
sub
resource,
it's
actually
and
and
I
think.
Maybe
a
lot
of
us
have
already
seen
this.
If
you
do
a
copy,
it
actually
just
runs
an
exec
where
the
command
is
tar,
and
so
this
is
why
you
can't
do
a
coupe
cuddle
copy.
A
Unless
you
have
tar
on
your
container,
because
it's
going
to
try
to
exec
this
particular,
you
know
that
particular
binary
on
the
container
and
if
it's
not
there,
it
just
fails.
A
A
So
so
I
actually
haven't
had
the
opportunity
to
get
into
that
sub
protocol
and
how
that
differs
from,
say,
exec,
but
it
it
is
yeah
it
it
is.
You
know
the
same,
it
is
using
Speedy
or
we
hope,
websockets
in
the
same
way.
It's
just
not
it's
just
not
multiplexing
those
particular
file.
Descriptors.
G
So
they're
great
yeah
and
cool
you
were
actually
mostly
talking
to
the
API
whenever
it's
HTTP,
not
HTTP,
we're
just
looking
at
a
coupe
cuddle,
just
because
I
didn't
feel
like
doing
doing
that.
So
this
should
help
with
those
kinds
of
clients.
G
A
A
So
so,
during
this
exercise,
I
initially
had
the
opportunity
to
kind
of
dig
into
the
Container
run
time,
because
that's
where
the
speedy
and
the
websockets
initially
would
have
been
terminated
and
so
I
I
had
some
had
some
fun
digging
into
some
areas
that
I
don't
usually
get
to
dig
into.
And
of
course,
then
we
we
realized
that
actually
trying
to.
A
If
the
servers
on
the
container
runtime,
then
we'd
have
to
change
every
single
container
runtime
like
container
D,
cryo
and
all
of
them
before
we
could
actually
get
this,
and
so
it
was.
We
wanted
to
reduce
the
scope
of
of
this
effort
to
get.
You
know
most
of
what
we
needed
by
just
translating
the
websockets
to
Speedy
at
the
API
server.
D
F
This
John,
when
you
talk
to
API
Machinery
about
this,
could
you
also
bring
up
the
the
gorilla
websocket
thing
where
that's
like.
F
A
So,
all
of
so
it
turns
out
there's
actually
web
search,
websocket
code
already
through
littered
throughout
the
system
and
it's
all
the
the
standard,
Library
websocket
stuff.
So
we
and
the
proof
of
concept
PR
that
that
we
based
this
on
that
Mikhail
Missouri
created,
he
used
the
gorilla
websockets
Library.
A
As
you
said,
it's
the
best
best
supported,
or
at
least
until
a
couple
months
ago
was
the
best
supported,
and
even
this
the
go
standard,
Library
websockets
said:
go
use
the
gorilla
websockets
and
that's
not
the
case
anymore.
So
so
there
is
you're
right.
There
is
a
big
question
as
to
what
library
and
this
Library
does
the
framing
and
has
control
frames.
You
know,
but
basically
we
shouldn't
be.
A
You
know
we
should
we
don't
have
any
visibility
as
to
how
it's
Framing
and
sending
these
arbitrary
length
messages.
It's
just
like.
It
goes
in
one
end
and
comes
out
the
other,
and
we
get
to
to
say
what
that
data
means.
But
how
it's
being
transmitted
you
know
is
is
part
it's
an
RFC
but
there's
multiple
libraries
which
have
implemented
this
websockets
RFC
and-
and
it's
actually
not
clear
which
one
to
use
right
now.
A
It
I
think
it
does
something
to
be.
That's
actually
a
really
good
question
that
I
wanted
to
find
out
myself
that
I
don't
actually
have
the
answers
for
does.
F
A
G
Yeah,
but
he
gets
logs,
doesn't
necessarily
need
bi-directional.
Although
x-off
Exotics
off
might
help
a
bit,
I
would
explain.
We
have
a
cluster,
that's
a
bit
unhealthy
and
we're
getting
eofs
from
Cooper
to
logs,
but
not
from
anything,
that's
going
via
the
Speedy
connection,
so
that
one.
Maybe
that
would
be
hard
to
explain
that
very
interesting.
A
Okay,
good
and
so
there's
I'm,
actually
gonna
I'll
put
the
there's
an
entire
document
that
we
tried
to
and
I'm
gonna
put
this
in
the
chat
that
tries
to
organize
and
centralize
a
lot
of
the
context.
A
Since
this
issue
has
been
going
on
for
eight
years,
it's
kind
of
hard
to
to
get
your
mind
around
all
of
it
and
so
I've
put
in
tons
of
Links
at
the
bottom
for
the
issues
and
the
PRS,
and
also
some
explanations
and
some
diagrams
on
what
this
this
means,
and
so
hopefully
this
this
document
will
will
be
able
to
be
the
one
place.
You
need
to
go
to
to
know
about
this
particular
issue.
A
So
I
don't
want
to
beat
this
into
the
ground.
Why
don't
I?
If,
if
we
don't
have
anything
else,
then
I
could
give
another
17
minutes
back
to
everybody.
Does
that
sound
reasonable.